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 相关文章推荐
Python的Django框架中消息通知的计数器实现教程
Jun 13 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
python登录并爬取淘宝信息代码示例
Dec 09 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
python导出hive数据表的schema实例代码
Jan 22 Python
解决python删除文件的权限错误问题
Apr 24 Python
Python的条件表达式和lambda表达式实例
Jan 31 Python
Python基于scipy实现信号滤波功能
May 08 Python
python numpy--数组的组合和分割实例
Feb 24 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
python简单实现插入排序实例代码
Dec 16 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相当简单的分页类
2008/10/02 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
js 创建书签小工具之理论
2011/02/25 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
python del()函数用法
2013/03/24 Python
django 外键model的互相读取方法
2018/12/15 Python
python统计指定目录内文件的代码行数
2019/09/19 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
新秀丽官方旗舰店:Samsonite拉杆箱、双肩包、皮具
2018/03/05 全球购物
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
竞选班干部演讲稿300字
2014/08/20 职场文书
工作经历证明书范文
2014/11/02 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
社区元宵节活动总结
2015/02/06 职场文书
怎样写观后感
2015/06/19 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
教你如何使用Python Tkinter库制作记事本
2021/06/10 Python
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL