- Log Level
logging模塊提供5個級別的日誌管理,
日誌等級由下至上逐漸提升,設置日誌等級後,只有等級大於等於設定級別的日誌寫入操作纔會執行寫入,如果將log的level設置爲INFO,那麼除了DEBUG級別的打印/寫文件之外,其他級別的都會打印/寫入 - 控制檯打印日誌
方式一:獲取log的root對象,設置level後直接打印
運行結果:import logging #獲取logger root對象 logger = logging.getLogger() #設置root對象的日誌等級爲debug level = logging.DEBUG logger.setLevel(level) #打印日誌 logging.debug("DEBUG") logging.info("INFO") logging.error("ERROR")
方式二:使用basicConfig
basicConfig通過對logger root對象添加一個帶有指定formatter的StreamHandller來完成對日誌系統的初始配置
參數列表
直接打印日誌到控制檯的話,只需要設置一下日誌等級即可
運行結果import logging logging.basicConfig(level=logging.DEBUG) level = logging.INFO #打印日誌 logging.debug("DEBUG") logging.log(level, "INFO BY Function Log") logging.info("INFO") logging.error("ERROR")
方式三:使用StreamHandler
運行結果:import logging import logging.handlers logger = logging.getLogger() level = logging.DEBUG logger.setLevel(level) hdlr = logging.StreamHandler() hdlr.setLevel(level) logger.addHandler(hdlr) #打印日誌 logger.debug("DEBUG: Modify Logger") logger.info("INFO") logger.error("ERROR")
- 寫日誌文件
方式一:使用BasicConfig
在BasicConfig中添加日誌文件路徑參數import logging logging.basicConfig(filename='./run.log', level=logging.DEBUG) level = logging.INFO #打印日誌 logging.debug("DEBUG") logging.log(level, "INFO BY Function Log") logging.info("INFO") logging.error("ERROR")
方式二:綁定handller
① TimedRotatingFileHandler
打開指定文件作爲日誌流對象返回,支持按一定的時間間隔輪詢日誌,即支持按照一定的時間間隔重新創建新的日誌文件,並對原有的日誌文件重命名。
函數參數:
filename:日誌文件文件名
when:指定什麼時間點對原有文件重命名,有效參數如下:
interval:時間間隔,單位與when對應
backupCount:最大保留日誌文件的個數
需要指定日誌文件重命名格式,設置返回值的suffix屬性。
需要注意一下propagate參數,表示是否傳遞父對象參數,而父對象是會王console窗口打印輸出的,所以,如果只寫文件的話,需要將該參數設置爲Falseimport logging import logging.handlers logger = logging.getLogger() level = logging.DEBUG logger.setLevel(level) hdlr = logging.handlers.TimedRotatingFileHandler("./run.log", when='midnight', interval=1, backupCount=5) hdlr.suffix = "%Y%m%d" logger.propagate = False logger.addHandler(hdlr) #打印日誌 logger.debug("DEBUG: Modify Logger") logger.info("INFO") logger.error("ERROR")
運行結果:
② RotatingFileHandler
按照指定的mode修改指定的文件並作爲日誌流對象返回,參數如下:
filename:日誌文件名
mode:文件修改方式
maxBytes:文件最大大小,默認0,不限制
backupCount:保留日誌的最大個數
代碼中設置mode爲‘a’,即在文件末尾追加日誌,當設置爲’w’後,創建handdler時會清空原文件。import logging import logging.handlers logger = logging.getLogger() level = logging.DEBUG logger.setLevel(level) hdlr = logging.handlers.RotatingFileHandler("./run.log", mode = 'a', backupCount = 2) hdlr.setLevel(level) logger.addHandler(hdlr) #打印日誌 logger.debug("~~~~~~~~~~~~RotatingFileHandler append~~~~~~~~~~~~~~~~~~~~~~~") logger.debug("DEBUG: Modify Logger") logger.info("INFO") logger.error("ERROR")
運行結果:
③ FileHanddler 與StreamHandller類似import logging import logging.handlers logger = logging.getLogger() level = logging.DEBUG logger.setLevel(level) hdlr = logging.FileHandler("./run.log") hdlr.setLevel(level) logger.addHandler(hdlr) #打印日誌 logger.debug("DEBUG: Modify Logger") logger.info("INFO") logger.error("ERROR")
【Python】寫日誌
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.