2012-04-14 9 views
3

ファイルからロガーを設定しましたが、.confファイルを変更せずにインラインコードを使用してロギングのレベルを変更したいと思います。python fileConfig loggerのレベルを変更してください

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 

答えて

7

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

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

だけlogging.config.fileConfigを使用している場合、この

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

http://docs.python.org/howto/logging.html

+1

グレート、私はインスタンスを取得する方法を知っているために必要な、 '' loggerInstance = logging.getLogger(__ __名)を使用し、感謝! –

+0

私はあなたを助けることができる嬉しい:) – cfedermann

+0

ありがとう非常に有用 – rbp

5

を参照してください、あなたが動的にするためにレベルを変更するようにあなたがそれを行うことができ、基本的なロガーを使用している場合一度にすべての子供のロガーを、あなたはすることができます...

a)set levelroot logger

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

b)はそれをやったdisable他のレベル

logging.disable(logging.INFO) 
+0

私が試みた他のすべては失敗しました。この答え(残念ながら正しいものとしてマークされていない)だけが実際に私のためにそれを行います。何らかの理由でbasicConfigを実行した後、別のbasicConfigを実行します。後者はログレベルを変更しません。このメソッドだけが後続の変更を行います。理由を理解して欲しいです。 –

+0

[basicConfig()への呼び出しはdebug()、info()などの呼び出しの前に来なければなりません。これは単発の単純な設定機能として意図されているので、最初の呼び出しだけが実際に何かを行います。 ops。](https://docs.python.org/3/howto/logging.html) –

関連する問題