如何在通过main.sh运行py文件时生成包含错误信息的日志文件
根因说明
你当前使用的
python3 python.py> log.txt写法仅重定向了标准输出流(stdout,文件描述符为1)到log.txt,Python运行时抛出的报错默认输出到标准错误流(stderr,文件描述符为2),因此不会被写入日志文件。
解决方案
方案1:标准输出和错误输出写入同一个日志文件
将main.sh中的命令修改为:python3 python.py > log.txt 2>&1
说明:2>&1表示将标准错误流的输出重定向到标准输出流指向的路径,也就是log.txt,正常输出和报错都会写入同一个文件。方案2:分开存储正常输出和错误输出
如需区分普通日志和错误日志,可以使用以下写法:python3 python.py > output.log 2> error.log
说明:正常打印内容会存入output.log,报错内容会单独存入error.log,更便于问题排查。方案3:同时输出到终端和日志文件
如需运行时在终端实时查看内容,同时将内容落盘日志,可以使用tee命令:python3 python.py 2>&1 | tee log.txt
效果验证
使用你提供的示例代码print(a)测试,运行修改后的main.sh后,打开log.txt即可看到完整报错信息:
Traceback (most recent call last): File "python.py", line 1, in <module> print(a) NameError: name 'a' is not defined
内容的提问来源于stack exchange,提问作者Khabbab Zakaria
相关产品推荐
相关产品推荐

