2016-06-29 53 views
6

目標:防止schedule在每次運行時都記錄日誌。關閉日程安排庫中的日誌記錄

背景:

我使用的loggingschedule庫在Python項目。

我的日誌文件包含有關由Raspberry Pi運行的樂器的物理狀態的信息,並且每10秒更新一次。

我使用schedule庫來安排該週期性日誌。

Here是我發現的schedule的有限文檔。

問題:

schedule庫記錄這一說法,每一次它運行的作業。

2016-06-29 09:01:51,022 INFO: Running job every 10 seconds do update_log() (Last run... 

的函數調用scheduleupdate_log(),計算包含在日誌中的變量我跑每十秒鐘,並記錄他們(下面的例子)的功能。

2016-06-29 09:01:51,022 INFO: Dist: 12.3 m Rate: 23.8 cm/s 

因爲schedule正在生產自己的(相當無用)日誌行,這讓我真正想要做非常難讀的記錄。

目標:

防止schedule從日誌記錄的第一條語句。

+0

您認爲如何將日誌級別設置爲高於INFO(WARNING)的日誌級別並將日誌記錄設置爲WARNING級別? – bernie

+1

順便說一句,我喜歡'schedule'模塊。 – bernie

+0

這樣可以解決問題,但感覺好像是一個解決方案,而不是解決方案。我也使用警告來處理異常的事件,但並不那麼可怕,以至於停止這個過程。 –

回答

5

schedule模塊是exclusively using the logger called schedule。您可以使用logging庫到disable this logger from writing to your main logger

import logging 
logging.getLogger('schedule').propagate = False 

如果你不想schedule的日誌可言,你也可以通過設置來禁用它上面的任何真正的日誌級別的日誌級別。

import logging 
logging.getLogger('schedule').setLevel(logging. CRITICAL + 10) 

由於python2.7,你也可以使用NullHandler來代替。

import logging 
logging.getLogger('schedule').propagate = False 
logging.getLogger('schedule').addHandler(logging.NullHandler()) 
+0

這樣做可以禁用日誌中的日程表行,但是我得到了一個'在程序開始時沒有處理程序可以爲記錄程序「schedule」發現一次警告。 –

+0

@MichaelMolter我已經添加了關於如何完全禁用'schedule'日誌的描述。 – MisterMiyagi

+1

我不知道能夠改變個人記錄器的優先級。我將級別設置爲'logging.CRITICAL'來移除警告,並仍然允許記錄嚴重錯誤。謝謝! –