2013-08-03 69 views
4

我在Python腳本中使用Advanced Python Scheduler。主程序通過調用logging.basicConfig和我想要的日誌的文件名來定義日誌。這個日誌也被設置爲「DEBUG」作爲日誌級別,因爲這是我目前需要的腳本。如何在Python中爲導入的模塊定義不同的記錄器?

不幸的是,因爲以這種方式設置了logging.basicConfig,所以apscheduler會將其日誌條目寫入同一個日誌文件。其中有很多,特別是因爲我有一個計劃任務每​​分鐘運行一次。

有沒有辦法將apscheduler的日誌輸出重定向到另一個日誌文件(而不改變apscheduler的代碼),而我的日誌文件用於我自己的腳本?即有沒有辦法在我的腳本中更改每個模塊輸出的文件名?

我嘗試閱讀module page和HOWTO進行記錄,但找不到答案。

回答

2

設置爲apscheduler記錄器級別爲所需值(例如WARNING避免apscheduler這樣看DEBUG和INFO消息:

logging.getLogger('apscheduler').setLevel(logging.WARNING) 
WARNING和更高的嚴重性

你仍然會得到的消息爲了引導從apscheduler消息到一個單獨的文件,使用

aplogger = logging.getLogger('apscheduler') 
aplogger.propagate = False 
aplogger.setLevel(logging.WARNING) # or whatever 
aphandler = logging.FileHandler(...) # as per what you want 
aplogger.addHandler(aphandler) 

確保上面的代碼是唯一的卡帶領一次(否則你會添加多個FileHandler實例 - 可能不是你想要的)。

+0

完美工作,至少是setLevel方法,我認爲它會爲我完成這項工作(因爲只要它不阻塞它就沒有問題)。稍後會嘗試其餘的。非常感謝。 – ShankarG

0

也許你想調用logging.getLogger(「apscheduler」)並在那裏設置它的日誌文件?看到這個答案https://stackoverflow.com/a/2031557/782168

+0

謝謝,但你能說明一點嗎?我不知道如何通過調用basicConfig()來設置文件名。 – ShankarG

+0

@ShankarG there * *有關如何設置日誌記錄*的其他文檔,而不是通過'basicConfig()',請參閱日誌記錄手冊,它是Python文檔的一部分。 –

相關問題