2017-10-10 31 views
0

Python3.6を使用してすべてのリクエストをリダイレクトする単純なHTTPサーバーを作成します。Python3 http.server:ログをファイルに保存する

私が書かれたファイルは、私は両方のWin8.1 CMD &のUbuntu 16.04.3バッシュで出力を見ることができますhere

を見つけることができます。 しかし、以下のいずれかの方法を試しても動作しません。ログをファイルに保存することはできません。

nohup python3 ./filename.py > ./logfile 2>&1 & 
python3 ./filename.py > ./logfile 2>&1 & 
setsid ./filename.py > ./logfile 2>&1 & 

私が使用してみました:

import sys 
logfile = open('logfile.log','w') 
sys.stdout = logfile 
sys.stdin = logfile 
sys.stderr = logfile 

それは動作しませんでした。

+1

"did not work"とはどういう意味ですか?サーバーが動作している間にファイルを読み込もうとしている場合、出力はまだフラッシュされていない可能性があります。 – jonatan

+0

Nope私はそれを実行しようとしたことを意味し、数時間後、ログファイルはまだ空です。私は> 2017/1/1 GET/- 301のようなログを見る必要があります。ただし、ログファイルには何も表示されません。 – PotatoChips

答えて

1

私はUbuntu 16.04でコードを試してみましたが、それは魅力的でした。

import sys 
logfile = open('logfile.log','w') 
sys.stdout = logfile 
sys.stdin = logfile 
sys.stderr = logfile 
+0

ここのスクリーンショットを参照してください。多少の依存関係の不足はありますか? https://i.loli.net/2017/10/11/59dd7aa56f3ca.jpg – PotatoChips

+0

@PotatoChipsはnohupのマニュアルページを読んでいますか? nohupは端末から離れてリダイレクトするので、残っている出力(どこにもない)をログファイルに書き込もうとしても、そのログファイルに何も表示されません。それ以外の場合、サーバーはまだ実行されているため、フラッシュされていない可能性があります。したがって、nohupなしで実行し、シャットダウンしてから、出力を確認してください。サーバーの稼働中にログを読み取る必要がある場合は、出力がフラッシュされていることを確認してください。 – jonatan

+0

私はnohupなしで走ろうとしましたが、サーバ時間後に私はプロセスを終了しました。ログファイルはまだ空のままです。 – PotatoChips

関連する問題