Python. 将stderr重定向到日志文件

1 投票
2 回答
1351 浏览
提问于 2025-04-16 09:51

我有一个用Django搭建的网站,它运行在tornado和nginx上。

我使用了这个tornado启动器的脚本(tornading.py)。

然后,我使用了python的openid,它会把一些信息输出到系统的错误日志中。

结果我遇到了IOError(输入输出错误)。

我该如何用logging包来重定向这些错误信息呢?

我考虑过

f = open("myfile.log", "w")
sys.stderr = f

或者

python tornado.py > /dev/null 2>&1

但是解决这个问题的最佳方法是什么呢?

2 个回答

1

使用 shell 重定向更像是一种变通方法,而不是解决方案,而且这并不总是可行,这取决于你是如何启动脚本的。

不过,它有一个明显的好处,就是你不需要去修改第三方的代码。即使是小的本地修改,当你决定从上游更新到最新版本时,可能会变成一个大问题。

4

最好的办法是,如果这个openid库不往错误输出流(stderr)里打印信息,而是使用某种日志记录的方式(比如说用日志模块)。我同意thkala的看法,长期来看,修改第三方的代码并不是个好主意,所以你应该先修复这个问题,然后把修复的方案提供给openid的作者。

为了推动开源社区的发展,这样解决问题是最好的方法。

撰写回答