Python. 将stderr重定向到日志文件
我有一个用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的作者。
为了推动开源社区的发展,这样解决问题是最好的方法。