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中使用SQLite的简单教程
Apr 29 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
Python中join函数简单代码示例
Jan 09 Python
python删除文本中行数标签的方法
May 31 Python
详解python爬虫系列之初识爬虫
Apr 06 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
Python如何读取、写入JSON数据
Jul 28 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
用Python自动清理系统垃圾的实现
Jan 18 Python
python在协程中增加任务实例操作
Feb 28 Python
基于Python实现的购物商城管理系统
Apr 27 Python
PyTorch中permute的使用方法
Apr 26 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的cms
2010/12/19 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
chrome原生方法之数组
2011/11/30 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
python创建线程示例
2014/05/06 Python
解读! Python在人工智能中的作用
2017/11/14 Python
python3实现随机数
2018/06/25 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
给民警的表扬信
2014/01/08 职场文书
国庆节文艺活动方案
2014/02/03 职场文书
连锁超市项目计划书
2014/09/15 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书