2016-06-29 4 views
6

目的:実行するたびにscheduleがログに記録されないようにします。スケジュールライブラリのログインを無効にする

背景:

私はPythonのプロジェクトでloggingscheduleライブラリを使用しています。

私のログファイルには、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... 

schedule呼び出しが、私は10秒ごとに実行し、(以下の例)、それらをログに記録し、ログに含まれる変数を計算する関数update_log()であることを機能。

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

scheduleは、ログの行(かなり役に立たない)独自の生産されているので、それは私が実際に読むことが非常に困難を行うにしようとしていますロギングを行います。

目標:

防止scheduleその最初の文をログから。

+0

ログレベルをINFO(WARNING)より高く設定し、警告レベルでログを記録することについてどう思いますか? – bernie

+1

Btw、私は '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

これは、ログ内のスケジュール行を無効にするために働きますが、プログラムの開始時に「ロガーのスケジュールが見つからない」という警告が表示されます。 –

+0

@MichaelMolter 'schedule'のロギングを完全に無効にする方法についての説明を追加しました。 – MisterMiyagi

+1

私は個々のロガーの優先順位を変更できないことに気づいていませんでした。レベルを 'logging.CRITICAL'に設定して警告を取り除いても、重大なエラーを記録することができます。ありがとう! –

関連する問題