9

cronスケジュールを介して毎秒実行するようにAPSchedulerをセットアップしました(一種の必要/希望)。現在、ロガーがすべてをコンソールに送信しています。

私が取り組んでいることにとってロギングが非常に重要でなければ、それは問題ありません。しかし、ログが必要です。私が望んでいないのは、APScheduler の情報ログです。このようなもの:

INFO at 2013-05-26 13:05:06,007: Job "loadavg.run (trigger: cron[year='*', month='*', day='*', week='*', day_of_week=' *', hour='*', minute='*', second='*'], next run at: 2013-05-26 13:05:06)" が正常に実行されました
INFO at 2013-05-26 13:05:06,008: 実行中のジョブ "cpu.run (トリガー: cron[year='*', month='*', day='*', week='*', day_of_week= '*', hour='*', minute='*', second='*'], 次回の実行: 2013-05-26 13:05:07)" (2013-05-26 13:05 に予定) :06)

cron ジョブを追加した後、コードにこれがあります。

logging.getLogger("apscheduler.scheduler").setLevel(logging.DEBUG)

私の知る限り、ログ情報を指定するための APScheduler の構成オプションもありません。

ロガーのレベルを ERROR などに指定できることはわかっていますが、INFO に設定された場合、この (役に立たないように見える) 情報もすべてログに記録したくありません。

4

3 に答える 3

5

最初に、 cron のような動作に APScheduler を使用していると仮定しますcron(8)

  1. APScheduler は、「cron スクリプトを外部で実行するよりもはるかに優れた代替手段である…」と主張しているため、自滅してください。
  2. おそらくシステムを何かひどいものにします

規定されているように、ロギング モジュールの優れた点は、アプリケーションがそのコードに触れることなく、ライブラリのロギング動作を幅広く制御できることです。残念ながら、logging最初は理解するのが少し難しくなります。

INFOレベルはあなたが興味のないものを報告するので、次のことができます:

class NoRunningFilter(logging.Filter):
    def filter(self, record):
        return not record.msg.startswith('Running job')

my_filter = NoRunningFilter()
logging.getLogger("apscheduler.scheduler").addFilter(my_filter)

これらはすべて、ロギング構成ファイルを使用して動的に指定できますが、これは私が今までに経験したことのない魔法のようなものです。

于 2013-05-26T23:22:54.247 に答える