在 TimedRotatingFileHandler 中添加文件扩展名

Vin*_*yak 5 python python-logging

我正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)

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

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

Raf*_*alS 7

您应该使用自定义namer

handler.namer = lambda name: name + ".log"
Run Code Online (Sandbox Code Playgroud)

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

handler.namer = lambda name: name.replace(".log", "") + ".log"
Run Code Online (Sandbox Code Playgroud)