3

ファイルからロガーを構成していて、.confファイルを変更せずに、代わりにインラインコードを使用して、ログのレベルを変更したいと考えています。

import logging.config

logging.config.fileConfig('..\\LoggingConfig\\loggingfile.conf')

logging.StreamHandler.setLevel(logging.info)

logging.debug("Debug")
logging.info("Info")

これにより、「情報」ログ行のみが画面に出力されます。どのオブジェクトでsetLevel()を呼び出すかわかりません!logging.StreamHandler.setLevel(logging.info)は、30分の検索後の暗闇の中での刺し傷です...

loggingfile.confファイル;

[loggers]
keys=root

[logger_root]
handlers=screen
level=NOTSET

[formatter_modfunc]
format=%(module)-20s  %(funcName)-25s %(levelno)-3s: %(message)s

[handlers]
keys=screen

[handler_screen]
class=StreamHandler
formatter=modfunc
level=DEBUG
args=(sys.stdout,)
qualname=screen
4

2 に答える 2

7

インスタンスを呼び出す必要がありsetLevelますLogger

LOGGER = logging.getLogger('your.module.file.name')
LOGGER.setLevel(_level)
LOGGER.info('foo')

基本的なロガーのみを使用している場合は、次のように実行できます

logging.basicConfig(level=_level)
logging.info('foo')

http://docs.python.org/howto/logging.htmlを参照してください

于 2012-04-14T07:05:55.347 に答える
6

logging.config.fileConfigを使用していて、すべての子ロガーのレベルを一度に動的に変更したい場合は、次のことができます...

a)ルートロガーのレベルを設定します:

logging.getLogger().setLevel(logging.WARNING)

b)他のレベルを無効にする

logging.disable(logging.INFO)
于 2012-06-21T08:00:12.380 に答える