2016-04-24 49 views
0

我有一個使用日誌模塊將數據輸出到文本文件的python程序,我遇到的問題是輸出到文本文件時工作正常運行腳本PyCharm(將1-10值輸出到控制檯屏幕並寫入Log_Test_File.txt),但是當我從命令行運行腳本時,僅顯示控制檯輸出(沒有寫入任何內容* .txt文件)。這發生在Ubuntu或我的Raspberry PiPython日誌記錄模塊 - 從命令行運行時輸出到文本文件

我將在啓動時自動運行Pi上的腳本(如sudo),有沒有辦法配置Pi或腳本,以便文本輸出正常工作?

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import logging 

logging.basicConfig(filename="Log_Test_File.txt", 
       level=logging.DEBUG, 
       format='%(levelname)s: %(asctime)s %(message)s', 
       datefmt='%m/%d/%Y %I:%M:%S') 

i=0 
while i<10: 
    logging.info("Logging test: {}".format(i)) 
    i+=1 
+0

請更具體地說明問題和任何錯誤。 _「...當我在PyCharm中運行腳本時工作正常,但當我從命令行運行腳本時,工作正常」_是模糊的。 – ChrisP

回答

1

您提供的代碼運行良好。

如果你有找到日誌文件被正確創建的問題,原因可能是:

  • 沒有權限創建日誌文件
  • 腳本不會在所有
運行

如果您打算長時間運行腳本運行腳本,我建議您跳過創建明確的日誌文件,然後登錄到stdout。發送到stdout的輸出很容易被程序控制腳本的執行(例如supervisord,systemd等)查看,捕獲和處理。

另一種選擇是直接登錄到系統日誌,但是這可能會變得更加複雜,因爲程序必須知道它自己,以及用於識別過程的值。對於程序本身來說,這對於流程管理者來說更簡單。

+0

感謝您的迴應 - 如果可能的話,我寧願使用日誌模塊(我可以將日誌級別從DEBUG更改爲INFO,例如方便),任何想法是什麼權限問題或我會改變它嗎? – AdamDynamic

+0

@AdamDynamic只需使用StreamHandler,即可使用標準日誌記錄登錄到stdout或stderr。關於權限問題 - 只要確保運行腳本的用戶能夠創建要寫入日誌的文件 - 例如,通過簡單的'$ touch the_log_file.log'。如果失敗,請使用'chown'或'chmod'。 –

相關問題