開發者可以通過三種方式配置日誌記錄:
fileconfig()相對第一種,第二種使用配置檔案方式更有優勢,主要是配置和**的分離,結構上更清晰,以及非開發者輕鬆修改日誌記錄屬性的能力。dictconfig()
本文將介紹第二種使用配置檔案方式記錄python程式日誌,將python程式日誌分別列印到控制台和日誌檔案,日誌檔案按時間戳滾動迭代,且可以自動刪除過期檔案。
多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在**尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
qq群:1057034340
首先建立配置檔案logging.conf
,以下是檔案內容。這裡主要介紹timedrotatingfilehandler
的配置引數args
,第乙個引數/var/log/demo3/example.log
表示日誌輸出的檔案目錄,第二個引數d
表示以天為單位迭代日誌檔案,第三個引數1
表示每隔1個週期,第二個引數和第三個引數相乘表示每隔幾個週期迭代乙個日誌檔案,第四個引數3
表示僅保留三個日誌檔案,超過該值的日誌檔案會被自動清除。
[loggers]編寫python程式,使用keys=root
[handlers]
keys=consolehandler,timedrotatingfilehandler
[formatters]
keys=******formatter
[logger_root]
level=info
handlers=consolehandler,timedrotatingfilehandler
[handler_consolehandler]
class=streamhandler
level=info
formatter=******formatter
args=(sys.stdout,)
[handler_timedrotatingfilehandler]
class=handlers.timedrotatingfilehandler
level=info
formatter=******formatter
args=('/var/log/demo3/example.log','d',1,3)
[formatter_******formatter]
format=%(asctime)s %(name)s %(levelname)s - %(message)s
datefmt=
fileconfig()
函式讀取配置檔案,測試列印各種型別的日誌。可以看出使用配置檔案的方式列印日誌,程式結構很清晰。
import logging.config執行python程式,控制台和日誌檔案輸出以下內容: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')
2020-11-03 20:50:49,434 ******_example.py info - info message2020-11-03 20:50:49,435 ******_example.py warning - warn message
2020-11-03 20:50:49,435 ******_example.py error - error message
2020-11-03 20:50:49,435 ******_example.py critical - critical message
spring 配置事務 配置檔案方式
xmlns xsi xmlns aop xmlns tx xmlns jdbc xmlns p xsi schemalocation spring beans 3.0.xsd spring jdbc 3.0.xsd spring aop 3.0.xsd spring tx 3.0.xsd destr...
spring 配置檔案載入方式
第一種 獲得spring資源,載入配置檔案 獲得spring的容器例項,beanfactory這是乙個抽象的介面 beanfactory factory new xmlbeanfactory resource 從容器中找到我們的bean,也就是我們的類 ihello hi ihello factor...
Spring AOP 通過配置檔案方式
1.寫乙個切面類 securitycontrol,其中有個方法 public class securitycontrol private void checksecurity joinpoint joinpoint object obj joinpoint.getargs for int i 0 i...