1. 程式人生 > >使用配置檔案方式記錄Python程式日誌

使用配置檔案方式記錄Python程式日誌

開發者可以通過三種方式配置日誌記錄: 1. 呼叫配置方法的Python程式碼顯式建立記錄器、處理程式和格式化程式。 1. 建立日誌配置檔案並使用`fileConfig() `函式讀取。 1. 建立配置資訊字典並將其傳遞給`dictConfig()`函式。 相對第一種,第二種使用配置檔案方式更有優勢,主要是配置和程式碼的分離,結構上更清晰,以及非開發者輕鬆修改日誌記錄屬性的能力。 本文將介紹第二種使用配置檔案方式記錄Python程式日誌,將Python程式日誌分別列印到控制檯和日誌檔案,日誌檔案按時間戳滾動迭代,且可以自動刪除過期檔案。 # 配置檔案方式列印日誌 首先建立配置檔案`logging.conf`,以下是檔案內容。這裡主要介紹`TimedRotatingFileHandler`的配置引數`args`,第一個引數`/var/log/demo3/example.log`表示日誌輸出的檔案目錄,第二個引數`d`表示以天為單位迭代日誌檔案,第三個引數`1`表示每隔1個週期,第二個引數和第三個引數相乘表示每隔幾個週期迭代一個日誌檔案,第四個引數`3`表示僅保留三個日誌檔案,超過該值的日誌檔案會被自動清除。 ```shell [loggers] keys=root [handlers] keys=consoleHandler,timedRotatingFileHandler [formatters] keys=simpleFormatter [logger_root] level=INFO handlers=consoleHandler,timedRotatingFileHandler [handler_consoleHandler] class=StreamHandler level=INFO formatter=simpleFormatter args=(sys.stdout,) [handler_timedRotatingFileHandler] class=handlers.TimedRotatingFileHandler level=INFO formatter=simpleFormatter args=('/var/log/demo3/example.log','d',1,3) [formatter_simpleFormatter] format=%(asctime)s %(name)s %(levelname)s - %(message)s datefmt= ``` 編寫Python程式,使用`fileConfig() `函式讀取配置檔案,測試列印各種型別的日誌。可以看出使用配置檔案的方式列印日誌,程式結構很清晰。 ``` import logging.config logging.config.fileConfig('logging.conf') # create logger logger = logging.getLogger() logger.debug('debug message') logger.info('info message') logger.warning('warn message') logger.error('error message') logger.critical('critical message') ``` 執行Python程式,控制檯和日誌檔案輸出以下內容: ``` 2020-11-03 20:50:49,434 simple_example.py INFO - info message 2020-11-03 20:50:49,435 simple_example.py WARNING - warn message 2020-11-03 20:50:49,435 simple_example.py ERROR - error message 2020-11-03 20:50:49,435 simple_example.py CRITICAL - critical message ``` # 參考資料 https://docs.python.org/zh-cn/3/howto/logging.html#logging-advanced-tutorial 進階日