6

Python スクリプトでAdvanced Python Schedulerを使用しています。メイン プログラムは、必要なログのファイル名を指定して logging.basicConfig を呼び出すことにより、ログを定義します。このログは、ログ レベルとして "DEBUG" にも設定されています。これは、現時点でスクリプトに必要なものだからです。

残念ながら、logging.basicConfig はこのように設定されているため、apscheduler はそのログ エントリを同じログ ファイルに書き込みます。特に、毎分実行されるスケジュールされたタスクが 1 つあるため、これらは非常に多くあります。

自分のスクリプトにログ ファイルを使用しているときに、apscheduler のログ出力を (apscheduler のコードを変更せずに) 別のログ ファイルにリダイレクトする方法はありますか? つまり、スクリプト内で各モジュールの出力のファイル名を変更する方法はありますか?

モジュールページとロギングの HOWTO を読んでみましたが、これに対する答えが見つかりませんでした。

4

2 に答える 2

5

のロガー レベルをapscheduler目的の値に設定します (たとえば、次のようなWARNINGDEBUG および INFO メッセージが表示されapschedulerないようにするには:

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)

Ensure the above code is only called once (otherwise you will add multiple FileHandler instances - probably not what you want).

于 2013-08-03T14:12:24.227 に答える