仅在出现错误时生成Python日志文件(使用logging模块)

5 投票
1 回答
4101 浏览
提问于 2025-04-16 07:04

我想在Python中使用“logging”模块把错误写入一个日志文件。不过,我希望这个文件只有在出现错误的时候才会被创建。我用的代码是:

import logging

f = 'test.conf'

logger = logging.getLogger("test_logger")
logger.setLevel(logging.INFO)

ch_file = logging.FileHandler("test_logger.conf")
ch_file.setLevel(logging.ERROR)

logger.addHandler(ch_file)

ch_file.close()

ch = logging.StreamHandler()
ch.setLevel(logging.INFO)

formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")

ch.setFormatter(formatter)


logger.addHandler(ch)

logger.info("info")
logger.warn("warning")
#logger.error("error")

当我取消注释logger.error("error")这一行时,我期待会生成一个名为“test_logger.conf”的文件,并且里面有错误信息。但是,当这一行被注释掉时,我发现“test_logger.conf”文件还是被创建了,而且是空的。我该怎么做才能确保这个文件只有在有错误需要记录的时候才会被创建呢?

谢谢。

1 个回答

9

你真幸运。FileHandler 有一个叫做 delay 的参数,专门用来实现这个功能:

ch_file = logging.FileHandler("test_logger.conf",delay=True)

撰写回答