短い答え
あなたはは、あなたのアプリケーションのためにそれを設定するは必要ありません。そのようにすると便利です。
ロング回答
loggingモジュールは、任意のPythonコードが出力に依存しない、それを使用して、実際のアプリケーションにある方法で情報を記録することを可能にするPythonモジュールです。任意の深度のライブラリは、ログモジュール、ログ情報、警告、エラーなどをインポートすることができ、ユーザがどのようにそれらを受け取るかを正確に知る必要はありません。
あなたが見ているのは、自分のアプリケーションにハンドラがないことです。 ZODBは明らかに情報を記録していますが、ハンドラを定義していないため、このログ情報はエーテルに気化しています。あなたには、いくつかのログ情報を見たい場合は、あなたがLogging Cookbookからハンドラ
を定義する必要があることを通知です:
import logging
# create logger with 'spam_application'
logger = logging.getLogger('spam_application')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh = logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
この例では、アプリの名前のロガーを作成します。次に、2つのタイプのハンドラを作成します。 1つはDEBUGレベルのログをファイルに書き込むためのファイルハンドラです。 2番目は、コンソールにエラーを送信するストリームハンドラです。
あなたのコンソールに行くより詳細な情報を見たい場合は、INFOにログレベルを変更することができますに:
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
はまた、「フォーマッタ」の概念に注目してください。異なるハンドラーに異なるログ形式を設定できます。
少なくともあなたのアプリケーションでストリームハンドラを作成すると、ハンドラが定義されていないことを警告しなくなります。
python 2.7+の場合、logging
モジュールにはNullHandler
が含まれています。これは、エンド・ユーザーがロギング・ハンドラーなしで(ライブラリーを使用して)ライブラリーを使用しているときに、エラーをサイレントにするデフォルト・ハンドラーであるように、ライブラリー(データベース・ライブラリーなど)で使用されることを意図しています。したがって、ロギングを気にせずに単純に静かにしたい場合は、自分のコードにNullHandler
を追加することができます。実際にログを設定することをお勧めしますが、これはちょうど別のオプションです:[Pythonの - いいえ、ハンドラがロガー「OpenGL.error」のために見つかりませんでした]の
Adding NullHandler to the logger
import logging
logging.getLogger('spam_application').addHandler(logging.NullHandler())
出典
2012-06-25 19:09:48
jdi
可能重複します(http:/ /stackoverflow.com/questions/345991/python-no-handlers-could-be-found-for-logger-opengl-error) –
これはZODBの問題ではありません。あなたのアプリケーションでは、Pythonロギングシステムを設定していません。 –
私はその質問を削除するように依頼しました。この投稿に関連する質問を更新する予定です.thanks jdi –