Python日志:自定義輸出字段 json格式輸出方式
最近有一個(gè)需求:將日志以json格式輸出, 并且有些字段是logging模塊沒有的.看了很多源碼和資料, 終于搞定, 抽取精華分享出來, 一起成長(zhǎng).
import jsonimport 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í)就是重寫了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è)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. XML入門的常見問題(三)2. XML 增、刪、改和查示例3. XML 非法字符(轉(zhuǎn)義字符)4. WMLScript的語法基礎(chǔ)5. JavaScript中顏色模型的基礎(chǔ)知識(shí)與應(yīng)用詳解6. 不要在HTML中濫用div7. ASP動(dòng)態(tài)include文件8. el-input無法輸入的問題和表單驗(yàn)證失敗問題解決9. 前端html+css實(shí)現(xiàn)動(dòng)態(tài)生日快樂代碼10. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)
