[英]How to log outputs and errors to file without knowing where errors will occur
我有一个在远程服务器上运行的长脚本,我想将所有输出以及错误消息记录到文件中。
# in script:
import sys sys.stdout = open('./myfile.txt', 'w')
# ...
sys.stdout.close()
# in terminal:
python myscript.py > ./myfile.txt
这会将所有 print() 输出写入我想要的文件。 但它不会将错误消息写入文件以防万一失败。
import logging
try:
# ...
except ZeroDivisionError as e:
logging.error(e) # ERROR:root:division by zero
链接到日志记录模块的所有解决方案的问题是,我需要知道错误将在哪里发生以将其包装在 logging.error() function 中。 但我并不总是知道我的错误会发生在哪里。
=>我如何(1)写入所有输出和(2)使我的脚本失败的错误文件?
您必须将 python 错误 output sys.stderr
重定向到文件:
import sys
sys.stderr = open("errors.txt", "w")
我认为可以创建一个包含您要写入的所有日志的新文件。 配置看起来像这样:
import logging
logging.basicConfig(filename='std.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
这将 output 记录消息到 std.log 文件
自己找到了答案:只需在终端中输入,并确保您在正确的目录中有一个 log.text 文件。 无需更改脚本。
python script.py &> ./log.txt
灵感来自这个问题: Redirect stdout and stderr to same file using Python
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.