gpt4 book ai didi

Python:如何在 txt 文件中的控制台中写入错误?

转载 作者:行者123 更新时间:2023-12-03 22:09:51 24 4
gpt4 key购买 nike

我有一个 python 脚本,它每 10 分钟向我发送一封电子邮件,所有内容都写在控制台中。我在我的 ubuntu 18.04 vps 中使用 crontab 运行它。
有时它不发送邮件,所以我假设发生错误时执行停止,但我怎样才能将错误写入 txt 文件以便分析错误?

最佳答案

记录模块

使用 logging 演示该方法模块,这将是一般方法

import logging

# Create a logging instance
logger = logging.getLogger('my_application')
logger.setLevel(logging.INFO) # you can set this to be DEBUG, INFO, ERROR

# Assign a file-handler to that instance
fh = logging.FileHandler("file_dir.txt")
fh.setLevel(logging.INFO) # again, you can set this differently

# Format your logs (optional)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter) # This will set the format to the file handler

# Add the handler to your logging instance
logger.addHandler(fh)

try:
raise ValueError("Some error occurred")
except ValueError as e:
logger.exception(e) # Will send the errors to the file

如果我 cat file_dir.txt
2019-03-14 14:52:50,676 - my_application - ERROR - Some error occurred
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError: Some error occurred

打印到文件

正如我在评论中指出的,您可以使用 print 来完成此操作。以及(我不确定你是否会为此而鼓掌)

# Set your stdout pointer to a file handler
with open('my_errors.txt', 'a') as fh:
try:
raise ValueError("Some error occurred")
except ValueError as e:
print(e, file=fh)
cat my_errors.txt
Some error occurred

请注意 logging.exception在这种情况下包括回溯,这是该模块的众多巨大好处之一

编辑

为了完整起见, traceback 模块利用与 print 类似的方法,您可以在其中提供文件句柄:

import traceback
import sys

with open('error.txt', 'a') as fh:
try:
raise ValueError("Some error occurred")
except ValueError as e:
e_type, e_val, e_tb = sys.exc_info()
traceback.print_exception(e_type, e_val, e_tb, file=fh)

这将包括您想要从 logging 获得的所有信息

关于Python:如何在 txt 文件中的控制台中写入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55169364/

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