在 TimedRotatingFileHandler 中添加文件扩展名

Add File Extension in TimedRotatingFileHandler

我正在尝试使用 TimedRotatingFileHandler

实现 python 日志记录

我在日志文件名中添加文件扩展名时遇到问题

这是我的代码

Path(".\Log").mkdir(parents=True, exist_ok=True)
LOGGING_MSG_FORMAT  = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
LOGGING_DATE_FORMAT = '%m-%d %H:%M:%S'
formatter = logging.Formatter(LOGGING_MSG_FORMAT, LOGGING_DATE_FORMAT)
handler = TimedRotatingFileHandler(".\Log\info.log",'midnight',1)
handler.setFormatter(formatter)
handler.setLevel(logging.INFO)
root_logger = logging.getLogger()
root_logger.addHandler(handler)

第一次使用此代码时,我按预期获得了文件名 "info.log",但是当它滚动到午夜时 我得到的文件名是 "info.log.2020-05-22" 但我期望的是 "info.2020-05-22.log".

如何在文件扩展名 (.log) 前附加处理程序后缀?

您应该使用自定义 namer:

handler.namer = lambda name: name + ".log"

不幸的是,namer 函数获取的是经过处理的名称。名称参数类似于 "info.log.2020-05-22",因此您最终会得到 "info.log.2020-05-22.log"。如果 double .log 不可接受,只需删除第一个:

handler.namer = lambda name: name.replace(".log", "") + ".log"

谢谢 RafaIS 这对我来说非常有用。我只是做了一个小改动。我刚刚从初始文件中删除了 .log。

handler = TimedRotatingFileHandler(".\Log\info",'midnight',1)

然后使用第一个 lambda 选项: handler.namer = lambda name: name + ".log"