2016-07-16 9 views
0

こんにちは私はロギングマネージャGUIを作りたいです。基本的に私は、ロガーのツリー構造を取得し、pyqt guiにレベルとフォーマッタを表示したいと思います。ハンドラオブジェクトに関連付けられたフォーマッタからフォーマット文字列を取得するにはどうすればよいですか?Pythonのlogging.formatterオブジェクトからフォーマッタ文字列を取得するにはどうすればよいですか?

例:logging.Formatterオブジェクトから

import logging 
_logger = logging.getLogger('myLogger') 

ch = logging.StreamHandler() 
ch.setLevel(logging.INFO) 
formatter = logging.Formatter('%(name)s:%(levelname)s: %(message)s') 
ch.setFormatter(formatter) 
_logger.addHandler(ch) 
_logger.propagate=0 

今私は_loggerを持って、どのように私は、文字列 ':%(levelname)■%(メッセージ)■%(名前)s' を得ることができますか?

>>> _logger.handlers[0] 
<logging.StreamHandler object at 0x13807610> 
>>> _logger.handlers[0].formatter 
<logging.Formatter object at 0x13807690> 

答えて

5

logging.Formatterインスタンスが_fmt属性を持っている:

>>> _logger.handlers[0].formatter 
<logging.Formatter object at 0x102c72fd0> 
>>> _logger.handlers[0].formatter._fmt 
'%(name)s:%(levelname)s: %(message)s' 

あなたが常に利用できるかもしれないものの名前を参照するオブジェクトにdir()vars()を使用することができます。

>>> vars(_logger.handlers[0].formatter) 
{'datefmt': None, '_fmt': '%(name)s:%(levelname)s: %(message)s'} 

たりできただけでlook at the source codemodule documentationの上部からリンクされています)。

関連する問題