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

发布于 2024-10-12 04:08:46 字数 433 浏览 8 评论 0原文

我有一个关于tornado 和nginx 的Django 网站。

我拿了这个龙卷风发射器 脚本 (tornading.py)

然后我使用 python openid 输出一些信息到 sys.stderr。

结果我得到了 IOError。

如何使用日志包重定向它?

我想过

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

或者

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

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

I have Django web-site working on tornado and nginx.

I took this tornado launcher script (tornading.py)

Then I'm using python openid that outputs some information to sys.stderr.

As a result I get IOError.

How can I redirect it using logging package?

I thought about

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

or

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

But what is the best way to solve it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清风挽心 2024-10-19 04:08:46

最好的方法是 openid 库不打印到 stderr,而是使用某种日志记录 API(例如日志记录模块)。我同意 thkala 的观点,即修改第三方代码从长远来看并不好,所以你应该修复它,然后向 openid 作者提供修复程序。

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

The best way would be if the openid library didn't print to stderr, but used some kind of logging API instead (e.g. the logging module). I agree with thkala that modifying third-party code is not good in the long term, so you should fix it, and then provide the fix to the openid authors.

For the objective of advancing the open source community, that's the best way to solve it.

不羁少年 2024-10-19 04:08:46

使用 shell 重定向更多的是一种解决方法,而不是解决方案,并且可能并不总是可行,具体取决于脚本的启动方式。

然而,它具有明显的优势,即您不必修改第三方代码。当您决定将上述代码从上游更新到最新版本时,本地修改(即使是很小的修改)也可能成为一个主要问题。

Using shell redirections is more of a work-around than a solution and it may not be always possible, depending on how the script is launched.

It has the distinct advantage, however, of you not having to modify third-party code. Local modifications - even minor ones - can become a major issue when you decide to e.g. update said code to its latest version from upstream.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文