Python日志:自定义输出字段 json格式输出方式


Posted in Python onApril 27, 2020

最近有一个需求:将日志以json格式输出, 并且有些字段是logging模块没有的.看了很多源码和资料, 终于搞定, 抽取精华分享出来, 一起成长.

import json
import logging
 
class JsonFilter(logging.Filter):
 
 ip = 'IP'
 source = 'APP'
 
 def filter(self, record):
  record.ip = self.ip
  record.username = self.source
  return True
 
if __name__ == '__main__':
 
 formate = json.dumps({
  "time": "%(asctime)s",
  "levelname": "%(levelname)s",
  "levelno": "%(lineno)d",
  "ip": "%(ip)s",
  "source": "%(source)s"
 })
 logging.basicConfig(level=logging.DEBUG,
      format=formate)
 logger = logging.getLogger()
 filter_ = JsonFilter()
 logger.addFilter(filter_)
 
 logger.debug('A debug message')
 
 filter_.ip = '127.0.0.1'
 filter_.source= 'china'
 logger.info('A message for test')

运行结果:

Python日志:自定义输出字段 json格式输出方式

其实就是重写了logging.Filter的filter方法,自定义需要的字段, 在调用日志输出时,赋予相应的值即可.不赋予相应的值时也可以输出日志, 会自动按照定义字段时的信息输出.

补充知识:Log打印完整参数,生成Json文件

当字符数量足够多的的时候,Log控制台便会自动截取,不能在控制台上完整输出,可以利用如下方法,这种方式会在测试机或者虚拟机的根目录生成一个new.json文件,里面是完整的Log信息

public static void printStringToFile(String str) {
 File file = new File(Environment.getExternalStorageDirectory(), "new.json");
 Log.d("Lyb", "path = " + file.getAbsolutePath());
 FileWriter writer = null;
 try {
  Log.d("Lyb", "createNewFile");
  if (!file.exists()) {
   file.createNewFile();
  }else {
   file.delete();
   file.createNewFile();
  }
  writer = new FileWriter(file, true);
  writer.write(str);
  writer.flush();
  writer.close();
  writer = null;
 } catch (IOException e) {
  e.printStackTrace();
 } finally {
  try {
   if (writer != null) {
    writer.close();
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

以上这篇Python日志:自定义输出字段 json格式输出方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
flask中使用SQLAlchemy进行辅助开发的代码
Feb 10 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
python实现爬取图书封面
Jul 05 Python
Python3安装psycopy2以及遇到问题解决方法
Jul 03 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
pandas的连接函数concat()函数的具体使用方法
Jul 09 Python
Python学习笔记之Zip和Enumerate用法实例分析
Aug 14 Python
Python 使用office365邮箱的示例
Oct 29 Python
浅析Python的命名空间与作用域
Nov 25 Python
python生成word合同的实例方法
Jan 12 Python
python面向对象版学生信息管理系统
Jun 24 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
Apr 27 #Python
python logging通过json文件配置的步骤
Apr 27 #Python
Python垃圾回收机制三种实现方法
Apr 27 #Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
Apr 27 #Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 #Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 #Python
python读取yaml文件后修改写入本地实例
Apr 27 #Python
You might like
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
PHP防止跨域提交表单
2013/11/01 PHP
php实现通用的信用卡验证类
2015/03/24 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
laravel学习教程之存取器
2016/07/30 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
js left,right,mid函数
2008/06/10 Javascript
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
JS 实现Json查询的方法实例
2013/04/12 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python实现截屏的函数
2015/07/26 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
什么是python的必选参数
2020/06/21 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
动物学专业毕业生求职信
2013/10/11 职场文书
理货员的岗位职责
2013/11/23 职场文书
药品促销活动方案
2014/02/14 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
白莲教口号
2014/06/18 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
单位在职证明书
2014/09/11 职场文书