python 日志输出为json格式文件_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();

}

}

}

以上这篇Python日志:自定义输出字段 json格式输出方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值