我正在实施我的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一切正常,所以这是我似乎与此唯一的错误。
+0
你怎么导入日期时间?这可能是由于使用'datetime.now()'而不是'datetime.datetime.now()'的常见错误而导致错误无法正确处理的错误。 –
+0
......我想我没有导入日期时间。虽然我只是改变我的配置文件为'datetime.datetime.now()',仍然有相同的错误。我会将它导入到我的Python脚本中吗? –
+0
是的,尝试在脚本的顶部放置'from datetime import datetime'。 –