2015-12-10 29 views
0

運行我哈瓦可執行文件a.py工作的罰款。但之後,我寫了一個腳本a.sh和/root/a.py >> /root/a.log啓動一個crontab * * * * * /bin/sh /root/a.sh,它工作得很好,除了在日誌文件中沒有輸出。 a.py的
測井部分配置如下:Python記錄模塊無輸出,而在crontab中

DATE_FORMAT = '%a, %d %b %Y %H:%M:%S' 
LOG_FILE = 'log' 
RESULT_LOG_FILE = 'result.log' 
LOG_FORMAT = '[%(asctime)s] [%(filename)s:%(lineno)d] [%(levelname)s] [%(threadName)s] [%(process)d] %(message)s' 
logging.basicConfig(format=LOG_FORMAT, datefmt=DATE_FORMAT, level=logging.INFO, filename=LOG_FILE) 
logging.error('ERROR') 

我曾試圖在中a.sh /root/a.py前面加/usr/local/bin/python,但沒有奏效。我不知道爲什麼會發生這種情況。

+0

您檢查了哪些日誌文件? result.log或a.log?根據你的代碼,日誌文件將是result.log,而a.log應該是空的。 – Srgrn

+0

兩者都沒有日誌輸出。在上面列出的代碼中,它應該是'log'文件,我在'logging.basicConfig(filename = LOG_FILE)' –

+0

中配置我的意思是'log'和'result.log'都沒有輸出,有一些'print'語句在a.log –

回答

6

命令/root/a.py >> /root/a.log確實將輸出重定向寫入文件/root/a.log。該>> =追加,而>將覆蓋。

你的腳本被記錄到result.log,不a.log。除非你有一個print聲明,沒有什麼會進入a.log

在您的logging.basicConfig中,日誌事件不會輸出到控制檯,只輸出到日誌文件,因此沒有「輸出」重新指向a.log

(在腳本中添加一個print 'hello console',你應該看到,在a.log)從評論

編輯:

result.log或許不是你的想法。由於其路徑取決於執行的位置,而不是腳本的位置。將RESULT_LOG_FILE = 'result.log'更改爲RESULT_LOG_FILE = '/root/result.log'

+0

輸出其實我有'在a.py文件print'聲明和a.log顯示它。但是logging.error('ERROR')的輸出沒有記錄在日誌(LOG_FILE)中,就像我在'logging.basicConfig'中配置的一樣。 –

+1

'result.log'可能不是你想象的地方。由於其路徑取決於執行的位置,而不是腳本的位置。將'RESULT_LOG_FILE ='result.log''更改爲'RESULT_LOG_FILE ='/ root/result.log''並嘗試。 – aneroid

+0

它的工作,謝謝 –