Python日志:自定义输出字段 json格式输出方式
作者:地球仪LV小陀螺 发布时间:2022-08-20 01:27:19
标签:Python,输出,字段,json
最近有一个需求:将日志以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')
运行结果:
其实就是重写了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();
}
}
}
来源:https://blog.csdn.net/diqiuyi7777/article/details/86498203
0
投稿
猜你喜欢
- 清除视图缓存,就是清除D:\phpStudy\WWW\BCCKidV1.0\storage\framework\views\002f30b1
- 这本来是翻译Estelle Weyl的《15 JavaScript Gotchas》,里面介绍的都是在JavaScript编程实践中平时容易
- Microsoft SQL Server 2000的会话上下文信息使应用程序得以设置二进制值,以便在同一会话或连接上运行的多个批处理、存储过
- 今天我和中国著名画家"渔人"谈了一个关于"怎样才能设计好"的问题,他给我说了一句话,得益不浅,那句话
- 如下所示:# 计算0到100之间的之间所有的数字累计求和结果# 定义最终结果的变量result = 0# 定义一个整数的变量来记录循环次数i
- 在使用matplotlib绘制图片时,x轴的刻度可能比较密集,特别是以日期作为x轴时,则最后会显示不出来。数据如下,速度V的数组与时间字符串
- 前言:Requests简介Requests 是使用Apache2 Licensed 许可证的 HTTP 库。用 Python 编写,真正的为
- 零、前言python代码中配置文件是必不可少的内容。常见的配置文件格式有很多中:ini、yaml、xml、properties、txt、py
- 突然发现自己对Web前端技术掌握得很少很少,就是自己最感兴趣的XHTML+CSS部分知道也不算多。在XHTML 1.1规定的诸多元素中,我平
- 问题描述:1、(先添加时间戳,再复制移动,两个文件加下面的文件名都被修改)将 /home/kangle/webdata/JPEGImages
- 0.目录1.遇到的问题2.创建二维数组的办法•3.1 直接创建法•3.2 列表生成式法•3.3 使用模块numpy创建1.遇到的问题今天写P
- 有这样一个要求,它要创建一个SQL Server查询,其中包括基于事件时刻的累计值。典型的例子就是一个银行账户,因为你每一次都是在不同的时间
- 1、生成配置文件''' 生成配置文件'''import configparse
- 首先,建一个文件夹,把你要隐藏的文件放在里面,你的所有黑客程序什么的。假设你建的文件夹叫hacker然后呢,我们给这个文件夹加个扩展名(后缀
- 对于个人网站来说,受到建站条件的制约,Access数据库成了广大个人网站站长的首选。然而,Access数据库本身存在很多安全隐患,攻击者一旦
- 前言迭代器是 23 种设计模式中最常用的一种(之一),在 Python 中随处可见它的身影,我们经常用到它,但是却不一定意识到它的存在。在关
- 前言本篇文章要使用OpenCV、Numpy 和Math这3个工具包实现一个简单的滤镜编辑器。在这个滤镜编辑器中,包含了3种滤镜效果,它们分别
- 问题:如何把具有相同字段的记录删除,只留下一条。 例如:表test里有id,name字段,如果有name相同的记录只留下一条,
- AdobeAdobe公司的标识1982年,40多岁的程序员约翰·沃诺克(John Warnock)和查尔斯·杰斯克(Charles Gesc
- <%@ Page Language="C#" AutoEventWireup="true" C