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中的面向对象编程详解(下)
Apr 13 Python
Python中规范定义命名空间的一些建议
Jun 04 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
python 进程的几种创建方式详解
Aug 29 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
基于python实现数组格式参数加密计算
Apr 21 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
python爬虫爬取图片的简单代码
Jan 18 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
动态新闻发布的实现及其技巧
2006/10/09 PHP
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
处理单名多值表单的详解
2013/06/08 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
javascript:void(0)使用探讨
2013/08/27 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
python二叉树遍历的实现方法
2013/11/21 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
Python处理CSV与List的转换方法
2018/04/19 Python
python微信公众号之关键词自动回复
2018/06/15 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
一篇文章弄懂Python中所有数组数据类型
2019/06/23 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
中国旅游网站:途牛旅游网
2019/09/29 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
建筑工程技术应届生自荐信
2013/09/27 职场文书
先进基层党组织材料
2014/12/25 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
如何用python绘制雷达图
2021/04/24 Python
详解python字符串驻留技术
2021/05/21 Python