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中的hypot()方法使用简介
May 18 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
Python 实现异步调用函数的示例讲解
Oct 14 Python
pycharm debug功能实现跳到循环末尾的方法
Nov 29 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
python中time库的实例使用方法
Oct 31 Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 Python
python批量生成身份证号到Excel的两种方法实例
Jan 14 Python
Python的collections模块真的很好用
Mar 01 Python
Python实现Hash算法
Mar 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
smarty中js的调用方法示例
2014/10/27 PHP
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
Python获取远程文件大小的函数代码分享
2014/05/13 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
Python探索之修改Python搜索路径
2017/10/25 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
使用numba对Python运算加速的方法
2018/10/15 Python
在Python中表示一个对象的方法
2019/06/25 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
Python flask框架端口失效解决方案
2020/06/04 Python
python模块内置属性概念及实例
2021/02/18 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
销售会计工作职责
2013/12/02 职场文书
党校学习自我鉴定
2014/02/24 职场文书
二年级学生评语大全
2014/04/23 职场文书
报到证办理个人委托书
2014/10/06 职场文书
李白故里导游词
2015/02/12 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
HttpClient实现表单提交上传文件
2022/08/14 Java/Android