在 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"
我正在尝试使用 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"