我正在尝试让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日志?
编辑:
使用绝对路径,我可以打开文件并写入它们,但我得到空文件,除非我最后关闭文件,是否有必要?我可以把文件打开吗?..
关于初始问题,即使我使用异常处理,在我的脚本末尾写一个“完成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'.
如果我故意引发错误,它会被记录在文件中,所以当我得到“ok”时我觉得脚本工作正常但结果仍然是该消息错误...没有线索
答案 0 :(得分:3)
您不能在WSGI应用程序中使用out.log
之类的相对路径名。 WSGI没有指定工作目录指向的位置,mod_wsgi没有设置它,除非在守护进程模式下特别要求。
根据应用程序的根目录使用绝对路径名。如果需要,您可以使用os.path.dirname(__file__)
获取包含当前脚本/模块的目录。
答案 1 :(得分:-2)
最后,我使用调试工具解决了这个问题,如下所述:
http://www.davidcramer.net/code/502/debugging-django-errors.html