2014-07-08 177 views
1

目前我重定向腳本使用下面的命令日誌文件:實時輸出重定向

python /usr/home/scripts/myscript.py 2>&1 | tee /usr/home/logs/mylogfile.log 

這似乎是工作,但因爲有一個打印命令時,它不盡快寫入文件。而是等到它可以打印的一組行。我想要同時寫入控制檯和日誌文件。這怎麼能通過輸出重定向來完成。請注意,在控制檯上運行腳本會在應有的時候打印所有內容。雖然在日誌文件上做一個尾巴-f是不平滑的,因爲它一次寫入大約50行。有什麼建議麼?

+0

'python.exe'有緩衝'stdout'和'stderr'一個'-u'開關。也許這會有所幫助? –

+0

這實際上似乎在做詭計!謝謝 – preezzzy

回答

0

這聽起來像外殼實際上就是在做緩衝,因爲你說作爲輸出預計到控制檯時不發球「d。

你可以看看這個帖子潛在的解決方案,以撤消殼緩衝:https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe

但我會建議完全在的Python這樣做,讓你有更多的直接控制,而不是打印到標準輸出,使用日誌記錄模塊。

這將允許在多個日誌記錄級別方面更大的靈活性,以多源添加到日誌對象集中(即標準輸出和文件的能力 - 和一個與大小旋轉,如果你想與logging.handlers.RotatingFileHandler喜歡),你不會受到外殼的外部緩衝。

更多信息:https://docs.python.org/2/howto/logging.html