python的logging模組

蜜罐子公子發表於2019-02-16

引言

具體實踐

#!/usr/bin/env python
# -*- coding=utf-8 -*-
import logging
appname = "com.thebingo.mhtt"
#建立一個logging的例項logger
logger = logging.getLoggger(appname)
#設定全域性日誌級別為DEBUG
logger.setLevel(logging.DEBUG)
#建立一個螢幕的handler,並且設定級別為DEBUG
ch = logging.StreamingHandler()
ch.setLevel(logging.DEBUG)
#建立一個檔案的handler,並且設定級別為DEBUG
fh= logging.FileHandler("toMyself.log")
fh.setLevel(logging.CRITICAL)
#設定日誌的格式
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
#add formatter to ch and fh
ch.setFormatter(formatter)
fh.setFormatter(formatter)
#add ch and fh to logger
logger.addHandler(ch)
logger.addHandler(fh)
#`application` code
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")

logging模組

logging模組提供logger,handler,filter,formatter.
logger:可以通過logging.getLogger(name)獲取logger物件,如果不指定name則返回root物件。
handler:將日誌記錄(log record)傳送到合適的目的地(destination),比如檔案,socket等。一個logger物件可以通過addHandler方法新增多個handler,每個handler又可以定義不同日誌級別,以實現日誌分級過濾顯示。

全域性日誌的權力大於區域性日誌。全域性日誌級別為CRITICAL的話,區域性變數想設定為INFO或者DEBUG都會失效。

關於formatter的配置,採用的是%(<dict key>)s的形式,就是字典的關鍵字替換。
https://docs.python.org/3.5/l…

相關文章