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 ログにアクセスせずにこの出力を取得する適切な方法はありますか?

編集:

絶対パスを使用すると、ファイルを開いて書き込むことができますが、最終的にファイルを閉じない限り、空のファイルが取得されます。必要ですか? ファイルを開いたままにできますか? ...

最初の問題に関しては、例外処理を使用しましたが、スクリプトの最後に「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'.

意図的にエラーを発生させた場合、それはファイルに記録されるため、「OK」を取得すると、スクリプトは正常に機能したと思いますが、結果は依然としてそのメッセージエラーです...手がかりはありません

4

1 に答える 1

3

out.logWSGI アプリケーションのように相対パス名を使用することはできません。WSGI は作業ディレクトリが指す場所を指定せず、mod_wsgi は特にデーモン モードで要求されない限り、それを設定しません。

アプリケーションのルートに基づく絶対パス名を使用します。os.path.dirname(__file__)必要に応じて、現在のスクリプト/モジュールを含むディレクトリを取得するために使用できます。

于 2010-10-07T18:50:00.987 に答える