ロガーは、コンソールと回転ファイルの2つのハンドラでセットアップされています。私は個々のハンドラを独自のログレベルで設定しました。そのアイデアは、コンソールで重要なメッセージが利用できるということです。さらにトラブルシューティングを行う必要がある場合は、低レベルのものがファイルに保存されます。個々のハンドラのログレベルをPythonで動的に変更できますか?
私の設定ファイルは次のようになります。動的に個々のハンドラのログレベルを変更する(してからリセット)する方法は
[loggers]
keys=root
[handlers]
keys=consoleHandler,rotateFileHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler,rotateFileHandler
qualname=MyApplication
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=ERROR
formatter=simpleFormatter
args=(sys.stdout,)
[handler_rotateFileHandler]
class=handlers.RotatingFileHandler
level=INFO
formatter=simpleFormatter
args=('TESTLOG.log', 'a', 100000, 5, 'utf8')
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
ありますか?私はこれをしようとしましたが、logger
は、まあ、ロガーでありハンドラではないので失敗します。また、既にDEBUG
に設定されています。ハンドラは上位レベルに設定されています。私の目標は、一定の期間のために低いレベル(すなわち。logging.DEBUG
にコンソールを設定し、変更が実行される前に、前のレベルを保存するか、明示的にリセットすることにより、いずれか、戻ってそれを変更することができるようにすることです
import logging
import logging.config
logging.config.fileConfig('logging.config', disable_existing_loggers=False)
logger = logging.getLogger('TestLog')
def main():
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
# Reset log level to debug temporarily
logger.setLevel(logging.DEBUG)
logger.debug('This message appears if level was reset to DEBUG')
if __name__ == '__main__':
main()
それ)。私はこれを行うとき、私は他のハンドラに触れたくありません。
ハンドラーのログレベルを動的に変更するにはどうすればよいですか?
'logger_root'セクションでは、' qualname'フィールドは完全に無視されます。それを設定することに意味はありません。 –