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连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 Python
python中 logging的使用详解
Oct 25 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
python2与python3共存问题的解决方法
Sep 18 Python
对Python之gzip文件读写的方法详解
Feb 08 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
pycharm无法导入lxml的解决办法
Mar 31 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
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
Laravel 5 框架入门(三)
2015/04/09 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
2017/03/01 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
jQuery live
2009/05/15 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
python选择排序算法的实现代码
2013/11/21 Python
Python 字符串操作方法大全
2014/03/11 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
python逆向入门教程
2018/01/15 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
python tkinter实现屏保程序
2019/07/30 Python
Python 解决相对路径问题:"No such file or directory"
2020/06/05 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
为什么会有内存对齐
2016/10/10 面试题
影视制作岗位职责
2013/12/04 职场文书
企业管理培训感言
2014/01/27 职场文书
优秀广告词大全
2014/03/19 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书