仅在出现错误时创建 Python 日志文件(使用日志记录模块)

Posted

技术标签:

【中文标题】仅在出现错误时创建 Python 日志文件(使用日志记录模块)【英文标题】:Make a Python log file only when there are errors (using logging module) 【发布时间】:2011-05-09 23:50:50 【问题描述】:

我想使用 Python 中的“日志记录”模块将错误写入日志文件。但是,我希望仅在出现错误时创建文件。我使用以下代码:

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】:

你很幸运。 FileHandler 有一个为此目的而设计的 delay 参数:

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

【讨论】:

以上是关于仅在出现错误时创建 Python 日志文件(使用日志记录模块)的主要内容,如果未能解决你的问题,请参考以下文章

异步/等待仅在读取文件时才是有效的异步函数[重复]

仅在已部署的 Qt 应用程序上出现未知的网络相关错误

Oracle错误——ORA-39002:操作无效ORA-39070:无法打开日志文件ORA-06512:在“SYS.UTL_FILE”,line

仅在函数中使用合并时才出现熊猫键错误

Django 日志记录错误:未创建日志文件

使用 zipfile zlib python 和 mailgun 时,Mailgun 仅在 Python 脚本中发送部分 zip 文件