我正在實施我的Python項目中的日誌記錄,並且遇到了一些障礙。我正在嘗試設置日誌記錄,以便將處理程序和格式化程序全部組織到配置文件中。我現在想要做的是設置我的fileHandler
,這樣它會創建一個類似如下的日誌文件:YYYY_MM_DD.log
顯然,Y代表年份,M代表月份,D代表當天。Python日誌記錄 - 將日期設置爲文件名
這就是我試圖用我的配置文件:
[loggers]
keys=root,MainLogger
[handlers]
keys=fileHandler, consoleHandler
[formatters]
keys=logFormatter, consoleFormatter
[logger_root]
level=DEBUG
handlers=fileHandler
[logger_MainLogger]
level=DEBUG
handlers=fileHandler, consoleHandler
qualname=MainLogger
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=consoleFormatter
args=(sys.stdout,)
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=logFormatter
args=(datetime.now().strftime('%Y_%m_%d.log'), 'a')
[formatter_logFormatter]
format=%(asctime)s | %(levelname)-8s | %(lineno)04d | %(message)s
[formatter_consoleFormatter]
format=%(asctime)s | %(levelname)-8s | %(fillname)s-%(funcName)s-%(lineno)04d | %message)s
我使用的測試配置文件很簡單:
import logging
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('MainLogger')
logger.debug("TEST")
特定的錯誤,我在得到時刻是:
configparser.InterpolationSyntaxError: '%' must be followed by '%' or '(', found: "%Y_%m_%d.log'), 'a')"
我試過改變%Y
,%m
和%d
,正如錯誤所述,但這並不能解決問題。我如何去設置配置文件,以便我的日誌文件看起來像我想要的那樣?
我應該注意,當我改變文件名爲test.log
一切正常,所以這是我似乎與此唯一的錯誤。
你怎麼導入日期時間?這可能是由於使用'datetime.now()'而不是'datetime.datetime.now()'的常見錯誤而導致錯誤無法正確處理的錯誤。 –
......我想我沒有導入日期時間。雖然我只是改變我的配置文件爲'datetime.datetime.now()',仍然有相同的錯誤。我會將它導入到我的Python腳本中嗎? – Skitzafreak
是的,嘗試在腳本的頂部放置'from datetime import datetime'。 –