2016-03-29 12 views
1

ロギングハンドラを後者に渡すPythonスクリプトとクラスオブジェクトを作成します。ハンドラはそのようログクラスを使用して作成されます。ハンドラがない場合のロガーの無効化

#Debug Handler 
debug_handler = logging.FileHandler('Debug.log') 
debug_handler.setLevel(logging.DEBUG) 

#Info Handler 
info_handler = logging.FileHandler('Normal.log') 
info_handler.setLevel(logging.INFO) 

これらのハンドラオブジェクトはオブジェクト初期化子に直接渡されます。

def __init__(self, type, path, info_handler = False, debug_handler = False): 

    #Establishes Class Logger 
    self.logger = logging.getLogger('LoggerName') 
    self.logger.setLevel(logging.DEBUG) 
    if (info_handler): 
     self.logger.addHandler(info_handler) 
    if (debug_handler): 
     self.logger.addHandler(debug_handler) 

私の目標は、ハンドラを作成するための完全オプションですそれらを使用するには、printステートメントと同じくらい頻繁に呼び出しをコード全体に分散する必要があります。例:

self.logger.info('INITIALIZING RESULTS OBJECT') 

つまり、ハンドラを渡すべきではないというエラーが発生します。コード内の呼び出しごとにtry/catchを置かずに、これらのステートメントを管理/無効化するにはどうすればよいですか?

答えて

0

更新:ハンドラが存在しないときにロガーを呼び出しても問題はありません。ライブラリは単にハンドラの不足を認識する文を出力します。私のエラーが定義されていなかったのハンドラを追加しようとによって引き起こされた、これは簡単に以下の文で整流されました:

if (info_handler): 
    self.logger.addHandler(info_handler) 
if (debug_handler): 
    self.logger.addHandler(debug_handler) 

私は、ロギングライブラリの基本的な構文を表示するように、この質問を残しておきます。

関連する問題