1. ホーム
  2. python

[解決済み】ロガーにハンドラが見つからない

2022-01-27 22:10:53

質問

Pythonの初心者です。私はpythonでログを取ろうとしたとき、私は遭遇しました。 logger に対応するハンドラが見つかりませんでした。 というエラーが発生しました。以下は、私が試したコードです。

import logging
logger=logging.getLogger('logger')
logger.warning('The system may break down')

そして、このようなエラーが発生します。 logger "logger"のハンドラが見つかりませんでした。

何が問題かというと、最初に警告を表示しようとしたときに logging を使用し、次に logger のように、正常に動作します。

>>> import logging
>>> logging.warning('This is a WARNING!!!!')
WARNING:root:This is a WARNING!!!!
>>> 
>>> logger.warning('WARNING!!!!')
WARNING:logger:WARNING!!!!

2番目のシナリオで何が起こっているのか、どなたか教えてください。

どのように解決するのですか?

メッセージのロギングを行うには logger Python では、少なくとも一つのハンドラを logger オブジェクトを作成します。デフォルトでは debug , warn にある関数など logging モジュールは basicConfig を追加し、さらに StreamHandlerroot logger .

それは、いつも おすすめ を使用して、必要なハンドラをモジュール用に書いているロガーオブジェクトに追加します。

を参照することができます。 Python公式ドキュメント があり、その中に すごいチュートリアル または、自分でloggingモジュールのソースコードをチェックアウトするのがよいでしょう。

単純に、Pythonのシェルでソースを確認することもできます。

import logging
import inspect
print(inspect.getsource(logging))

最後に basicConfig を明示的に指定すれば解決します。

import logging
logging.basicConfig()
logger = logging.getLogger('logger')
logger.warning('The system may break down')