logging 日誌模塊 一,級別的概念 二,修改配置信息 #format的多種格式 三,具體需求的實現 #暫時忽略,要用到面向對象的值是,而且可以通過生成器setlevel過濾 更改需求,實現對多個對象不同需求的實現 重點,四,引用配置模塊 #logging.config 專門用於配置loggin ...
一,級別的概念
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')
預設輸出結果是warning以上的級別,如果輸出以下級別需要修改配置信息。
#修改配置信息(修改預設的信息)
# logging.basicConfig(filename='a.txt', #指定的文件名
# filemode='a', #文件打開的模式
# level=logging.DEBUG, #指定級別
# format='%(filename)s %(levelname)s %(asctime)s %(message)s') #指定顯示的格式
# format的多種格式參見筆記
# logging.debug('debug')
# logging.info('info')
# logging.warning('warning')
# logging.error('error')
# logging.critical('critical')
#format的多種格式
'''
%(name)s:Logger的名字,並非用戶名,詳細查看
%(levelno)s:數字形式的日誌級別
%(levelname)s:文本形式的日誌級別
%(pathname)s:調用日誌輸出函數的模塊的完整路徑名,可能沒有
%(filename)s:調用日誌輸出函數的模塊的文件名
%(module)s:調用日誌輸出函數的模塊名
%(funcName)s:調用日誌輸出函數的函數名
%(lineno)d:調用日誌輸出函數的語句所在的代碼行
%(created)f:當前時間,用UNIX標準的表示時間的浮 點數表示
%(relativeCreated)d:輸出日誌信息時的,自Logger創建以 來的毫秒數
%(asctime)s:字元串形式的當前時間。預設格式是 “2003-07-08 16:49:45,896”。逗號後面的是毫秒
%(thread)d:線程ID。可能沒有
%(threadName)s:線程名。可能沒有
%(process)d:進程ID。可能沒有
%(message)s:用戶輸出的消息
'''
三,具體需求的實現
自定義四種核心功能
生成器:
mylog = logging.getLogger("mylog")
# 參數指定的是生成器的名稱 (因為可以同時存在多個生成器)
mylog.setLevel(10)
# 設置生成器的級別 低於該級別的不會生成
過濾器 :
#暫時忽略,要用到面向對象的值是,而且可以通過生成器setlevel過濾
處理器:
handler = logging.FileHandler("youlog.txt",encoding="utf8",)
#文件名, 編碼格式
#將處理器 綁定給生成器, add函數表明瞭一個生成器可以添加多個處理器
mylog.addHandler(handler) #固定用法,生成器+內置函數+處理器名字
格式化處理器:
formater = logging.Formatter(fmt="%(filename)s %(levelname)s %(asctime)s %(message)s")
# # 將格式化處理器 綁定給 handler
# handler.setFormatter(formater)
執行代碼,文件內輸出日誌結果。
更改需求,實現對多個對象不同需求的實現
mylog = logging.getLogger("mylog")
mylog.setLevel(10)
handler1 = logging.FileHandler("youlog.txt",encoding="utf8")
mylog.addHandler(handler1)
handler2 = logging.FileHandler("boss.txt",encoding="utf8",)
mylog.addHandler(handler2)
formater1= logging.Formatter(fmt="%(threadName)s %(funcName)s %(module)s %(filename)s %(levelname)s %(asctime)s %(message)s")
handler1.setFormatter(formater1)
formater2= logging.Formatter(fmt="%(levelname)s %(asctime)s %(message)s")
handler2.setFormatter(formater2)
mylog.info("info")
....
mylog.critical("critical")
重點,四,引用配置模塊
#logging.config 專門用於配置logging 模塊
import loggin.config
#通過一個字典來配置 logging模塊
logging.config.dictConfig(loggin_config.LOGGING_DIC)
#字典作為參數傳入,logging.getLogger('aa')拿到的logger配置
#aaloger是定義生成器的變數
aaloger = logging.getLogger("aa")
#輸出執行結果
aaloger.info("測試信息!")
#當要獲取的名稱不存在時 會返回一個預設的生成器
#預設是warning級別