gpt4 book ai didi

django - 使用 wsgi 将 stdout 和 stderr 重定向到 Django 中的文件

转载 作者:行者123 更新时间:2023-12-04 06:44:17 24 4
gpt4 key购买 nike

我试图让 django 在共享主机中与 wsgi 一起工作,所以我无法访问服务器日志,

我正在尝试将输出重定向到我的 django.wsgi 脚本中的文件,如下所示:

saveout = sys.stdout
log_out = open('out.log', 'w')
sys.stdout = log_out

但这是我遇到的错误(在我可以访问的唯一错误日志中)
[Thu Oct 07 19:18:08 2010] [error] [client <ip>]   File "/home/myuser/public_html/django.wsgi", line 9, in <module>
[Thu Oct 07 19:18:08 2010] [error] [client <ip>] mod_wsgi (pid=30677): Exception occurred processing WSGI script '/home/myuser/public_html/django.wsgi'.

这就是我能得到的所有错误

第 9 行是尝试打开文件的行。我之前尝试过创建文件,给每个人写访问权限,没有以前创建的文件..什么都没有。
在应用程序中,我只收到 500 服务器错误。

有没有一种正确的方法可以在不访问 apache 日志的情况下获取此输出?

编辑:

使用绝对路径,我可以打开文件并写入它们,但是除非我最后关闭文件,否则我会得到空文件,有必要吗?我可以让文件保持打开状态吗?...

关于最初的问题,即使我使用了异常处理,在我的脚本末尾写一个“finish ok”到文件,然后关闭文件,但仍然得到错误:
[Thu Oct 07 13:33:07 2010] [error] [client <ip>] mod_wsgi (pid=32541): Exception occurred processing WSGI script '/home/myuser/public_html/django.wsgi'.

如果我故意引发错误,它会记录在文件中,所以当我得到“好的”时,我认为脚本运行良好,但结果仍然是消息错误......没有线索

最佳答案

您不能使用像 out.log 这样的相对路径名在 WSGI 应用程序中。 WSGI 没有指定工作目录将指向的位置,并且 mod_wsgi 不会设置它,除非在守护程序模式下特别要求。

使用基于应用程序根的绝对路径名。您可以使用 os.path.dirname(__file__)如果需要,获取包含当前脚本/模块的目录。

关于django - 使用 wsgi 将 stdout 和 stderr 重定向到 Django 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3884147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com