歡迎您光臨本站 註冊首頁

Python日誌:自定義輸出字段 json格式輸出方式

←手機掃碼閱讀     火星人 @ 2020-04-27 , reply:0

最近有一個需求:將日誌以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格式輸出方式已經有400次圍觀

http://coctec.com/docs/python/shhow-post-231807.html