gpt4 book ai didi

python - 通过 Python 日志记录模块将意外错误记录到文件中

转载 作者:行者123 更新时间:2023-12-04 11:36:13 25 4
gpt4 key购买 nike

我一直在搜索互联网、Python 的官方文档和 StackOverflow 已经有一段时间了,但似乎找不到正确的答案。

我正在关注 Python 关于日志记录的官方 HOWTO - 我的记录器如下所示:

import os, logging
os.chdir("C:/Users/kerfuffle/Desktop/logtest")

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

fh = logging.FileHandler("logging.log")
fh.setLevel(logging.INFO)
sh = logging.StreamHandler()
sh.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
sh.setFormatter(formatter)

logger.addHandler(fh)
logger.addHandler(sh)

logger.debug("debug!")
logger.info("info!")
logger.warning("warning!")

代码的最后 3 行工作正常,我们还通过 StreamHandler 获得了正确的输出。

logging.log - 文件:
2020-05-27 15:41:59,586 - INFO - info!
2020-05-27 15:41:59,586 - WARNING - warning!

控制台输出:
2020-05-27 15:41:59,584 - DEBUG - debug!
2020-05-27 15:41:59,586 - INFO - info!
2020-05-27 15:41:59,586 - WARNING - warning!

现在我不明白的是以下内容:
如果我故意创建一个错误,我希望它被记录到一个文件中。所以我将未知的变量“var”添加到我的脚本中:
var += 1

我将在控制台中 StreamHandler() 日志记录旁边收到标准错误输出,如上所示:
2020-05-27 15:45:37,444 - DEBUG - debug!
2020-05-27 15:45:37,445 - INFO - info!
2020-05-27 15:45:37,451 - WARNING - warning!
Traceback (most recent call last):
File "c:/Users/kerfuffle/Desktop/logtest/file.py", line 23, in <module>
var += 1
NameError: name 'var' is not defined

我的日志文件只显示:
2020-05-27 15:45:37,445 - INFO - info!
2020-05-27 15:45:37,445 - WARNING - warning!

我从教程中知道我可以尝试通过以下方式逃避一切:
try:
var += 1
except Exception:
logger.exception("You moron! Don't do that") #or
logger.error('What a stupid error!')

但是,我如何才能捕获错误并将它们写入我的日志文件中,而这些错误是用户无法预测或主要不期望的? (=> 所以没有尝试/除外)

有时您只是在错误发生之前不知道它们。例如,当我有一个通过 cronjob 运行的脚本时。

谢谢您的回复! :-)

最佳答案

我相信您正在寻找以下标志:exc_info

try:
var += 1
except Exception as e:
logging.critical(e, exc_info=True)

这将捕获生成的错误消息并将其传播到日志记录。另见 https://stackoverflow.com/a/29556251/8140659

关于python - 通过 Python 日志记录模块将意外错误记录到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62045114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com