Python日志:自定義輸出字段 json格式輸出方式
最近有一個(gè)需求:將日志以json格式輸出, 并且有些字段是logging模塊沒(méi)有的.看了很多源碼和資料, 終于搞定, 抽取精華分享出來(lái), 一起成長(zhǎng).
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')
運(yùn)行結(jié)果:

其實(shí)就是重寫(xiě)了logging.Filter的filter方法,自定義需要的字段, 在調(diào)用日志輸出時(shí),賦予相應(yīng)的值即可.不賦予相應(yīng)的值時(shí)也可以輸出日志, 會(huì)自動(dòng)按照定義字段時(shí)的信息輸出.
補(bǔ)充知識(shí):Log打印完整參數(shù),生成Json文件
當(dāng)字符數(shù)量足夠多的的時(shí)候,Log控制臺(tái)便會(huì)自動(dòng)截取,不能在控制臺(tái)上完整輸出,可以利用如下方法,這種方式會(huì)在測(cè)試機(jī)或者虛擬機(jī)的根目錄生成一個(gè)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格式輸出方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python將數(shù)據(jù)插入數(shù)據(jù)庫(kù)的代碼分享
在本篇文章里小編給大家整理的是關(guān)于python將數(shù)據(jù)插入數(shù)據(jù)庫(kù)的代碼內(nèi)容,有興趣的朋友們可以參考下。2020-08-08
利用pytorch實(shí)現(xiàn)對(duì)CIFAR-10數(shù)據(jù)集的分類(lèi)
今天小編就為大家分享一篇利用pytorch實(shí)現(xiàn)對(duì)CIFAR-10數(shù)據(jù)集的分類(lèi),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
用OpenCV進(jìn)行年齡和性別檢測(cè)的實(shí)現(xiàn)示例
這篇文章主要介紹了用 OpenCV 進(jìn)行年齡和性別檢測(cè)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Tensorflow 自帶可視化Tensorboard使用方法(附項(xiàng)目代碼)
這篇文章主要介紹了Tensorflow 自帶可視化Tensorboard使用方法(附項(xiàng)目代碼),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
基于Python實(shí)現(xiàn)的掃雷游戲?qū)嵗a
這篇文章主要介紹了基于Python實(shí)現(xiàn)的掃雷游戲?qū)嵗a,對(duì)于Python的學(xué)習(xí)以及Python游戲開(kāi)發(fā)都有一定的借鑒價(jià)值,需要的朋友可以參考下2014-08-08

