2017-10-10 657 views
0

我使用Python3.6編寫一個簡單的HTTP服務器來重定向所有請求。Python3 http.server:將日誌保存到文件

我寫入的文件可以發現here

我可以看到在這兩個Win8.1 CMD &的Ubuntu 16.04.3猛砸輸出。 但是,無論我嘗試以下任何方法,它都不起作用,日誌無法保存到文件中。

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

你是什麼意思的「沒有工作」?如果您在服務器運行時嘗試讀取文件,那麼輸出可能還沒有被刷新 – jonatan

+0

不可以。我的意思是我試圖運行它,幾個小時後,日誌文件仍然是空的。我必須看到像這樣的日誌> 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

相關問題