web-dev-qa-db-ja.com

logging.infoはコンソールには表示されませんが、警告とエラーは表示されます

logging.infoでイベントをログに記録しても、Pythonターミナルに表示されません。

import logging
logging.info('I am info')  # no output

対照的に、logging.warnで記録されたイベントはターミナルに表示されます。

import logging
logging.warn('I am warning')  # outputs "I am warning"

logging.infoをコンソールに出力するための環境レベルの変更はありますか?それぞれのPythonファイルに変更を加えないようにしたい。

59
daydreamer

ルートロガーは常にデフォルトで警告レベルに設定されます。電話してみて

logging.getLogger().setLevel(logging.INFO)

そして、あなたは元気でなければなりません。

105
Ztyx

@ztyxが言ったように、デフォルトのロガーレベルは警告です。より低いレベルに設定する必要があります

logging.basicConfig を使用して logger level を設定することにより、それを行うことができます。

logging.basicConfig(level=logging.DEBUG)
10
Vlad Bezden

上記の解決策は私にとってはうまくいきませんでしたが、コード here はうまくいきました:

# set up logging to file
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
                    datefmt='%m-%d %H:%M',
                    filename='/temp/myapp.log',
                    filemode='w')
# define a Handler which writes INFO messages or higher to the sys.stderr
console = logging.StreamHandler()
console.setLevel(logging.INFO)
# add the handler to the root logger
logging.getLogger('').addHandler(console)

(読みやすくするためにコードの一部を省略しました)

6
Orly