私はあまりPythonのロギングに慣れていないので、出力をコンソールに出力しようとしています。私はそれが動作するようになっているが、それは出力がコンソールで2回見られ、私は理由がわからないようだ。私は類似の状況についてここで尋ねられた他の質問を見てきましたが、私を助けたものは何も見つかりませんでした。いくつかのモジュール出力をPythonが二度出力する
私は三つのモジュールを持っているが、ミリアンペア、メガバイト、MCとメインそれらを呼び出すことができます。 mainはこれらの3つのモジュールをインポートし、それらの関数を呼び出します。
ma.py
import logging
logger = logging.getLogger('test.ma') #test.mb for mb.py/test.mc for mc.py
logger.setLevel(logging.DEBUG)
console_log = logging.StreamHandler()
console_log.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(message)s')
console_log.setFormatter(formatter)
logger.addHandler(console_log)
...
...
#right before the end of each module, after I'm finished logging what I need.
logger.removeHandler(console_log)
mb.py
import logging
logger = logging.getLogger('test.mb')
logger.setLevel(logging.DEBUG)
console_log = logging.StreamHandler()
console_log.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(message)s')
console_log.setFormatter(formatter)
logger.addHandler(console_log)
...
...
#end of file
logger.removeHandler(console_log)
mc.py
import logging
logger = logging.getLogger('test.mc')
logger.setLevel(logging.DEBUG)
console_log = logging.StreamHandler()
console_log.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(message)s')
console_log.setFormatter(formatter)
logger.addHandler(console_log)
...
...
#end of file
logger.removeHandler(console_log)
:私はのようにロガーを設定し、各モジュールにおいて
私が持っている主な問題は、出力が2回印刷されていることですプログラムの一部ではフォーマットされていません。どんな助けもありがとう、ありがとう!
私はヘルパー3つすべてのモジュールがロギングを必要とする機能を呼び出します。だから、私はそのモジュールにこの関数を追加しました(上記のformatter/setLevelの変更を加えました)。それぞれのモジュールで、 'logger = helper.get_logger( 'test')'を呼び出すだけです。今私がプログラムを実行すると、ログは全く表示されず、印刷文だけが表示されます – bbakp3
レベルを 'logging.DEBUG'に設定するには' logger.setLevel'を呼び出さなければなりません。それ以外の場合は、エラーメッセージのみが表示されます。完全な例になるようにコードを更新しました。 –
ヘルパーモジュールのメソッドに 'logger.setLevel'関数を追加しました。 – bbakp3