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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
python基础教程之缩进介绍
Aug 29 Python
python插入排序算法实例分析
Jul 03 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
详解python做UI界面的方法
Feb 27 Python
Python中numpy模块常见用法demo实例小结
Mar 16 Python
python aiohttp的使用详解
Jun 20 Python
Python3监控疫情的完整代码
Feb 20 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
使用python处理题库表格并转化为word形式的实现
Apr 14 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 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
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
PHP的全局错误处理详解
2016/04/25 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
jQuery 移动端artEditor富文本编辑器
2016/01/11 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
vue实现拖拽效果
2019/12/23 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
JS实现简单打字测试
2020/06/24 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
Python实现简单的2048小游戏
2021/03/01 Python
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
2014年保管员工作总结
2014/11/18 职场文书
团组织推优材料
2014/12/29 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
超市主管竞聘书
2015/09/15 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server