2

我试图让 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 日志的情况下获取此输出?

编辑:

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

关于最初的问题,即使我使用了异常处理,在我的脚本末尾写一个“完成确定”到文件,然后关闭文件,但仍然得到错误:

[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'.

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

4

1 回答 1

3

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

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

于 2010-10-07T18:50:00.987 回答