Python の標準ログ システムを使用して、アプリケーションのログを記録しています。すべてのタイプのメッセージ (debug から critical まで) をコンソールに出力したいのですが、メッセージ レベルがエラー以上の場合は電子メールも送信したいと考えています。ロギングのドキュメントについて読んでいましたが、少しわかりにくかったです。次のテストをセットアップしましたが、正しく動作していないようです。
import logging
log = logging.getLogger('my_test_log')
sublog = logging.getLogger('my_test_log.sublog')
log.setLevel(logging.ERROR)
log.addHandler(logging.StreamHandler())
sublog.addHandler(logging.StreamHandler())
sublog.setLevel(logging.DEBUG)
sublog.debug('This is a debug message')
sublog.info('This is an info message')
sublog.warn('This is a warn message')
sublog.error('This is an error message')
sublog.critical('This is a critical message')
注: まだ電子メールをスパム送信したくないので、両方のログを StreamHandler に設定しましたが、技術的には、この状況で電子メールに送信する代わりに、エラーと重要なメッセージを 2 回出力する必要があります。これが機能した後、これをSMTPに変更してメールで送信します
これは、このコードを実行したときの出力です。
This is a debug message
This is a debug message
This is an info message
This is an info message
This is a warn message
This is a warn message
This is an error message
This is an error message
This is a critical message
This is a critical message
基本的に、エラーや重大なメッセージだけでなく、すべてが 2 回出力されます。ここで何が間違っていますか?ありがとう!