2013-04-17 7 views

答えて

-1

私はこれが役立つだろうと思った:Handler.setLevel(lvl)

LVLにこのハンドラのためのしきい値を設定します。 lvlより重大ではないログメッセージは無視されます。ハンドラが作成されると、レベルはNOTSET(すべてのメッセージが処理されます)に設定されます。

しかし、今、私はそれはあなたが(WARNING/ERRORからスプリットINFO/DEBUG)やりたいことではないだろうと見

言われ、カスタムハンドラ(例えばlogging.StreamHandlerを拡張するクラス)を書くことができることHandler.handle()メソッドを上書きします。

+0

これは*まだ* stdoutにログに記録されるまで*停止*警告メッセージは十分ではありません。 –

+1

フィルタがおそらくもっと良いでしょう。 – glglgl

+0

正解、私は答えを投稿した後に気づいた。今修正されました。 –

30

これは私がやりたいようだ:

#!/usr/bin/python 
    import sys 
    import logging 

    class InfoFilter(logging.Filter): 
     def filter(self, rec): 
      return rec.levelno in (logging.DEBUG, logging.INFO) 

    logger = logging.getLogger('__name__') 
    logger.setLevel(logging.DEBUG) 

    h1 = logging.StreamHandler(sys.stdout) 
    h1.setLevel(logging.DEBUG) 
    h1.addFilter(InfoFilter()) 
    h2 = logging.StreamHandler() 
    h2.setLevel(logging.WARNING) 

    logger.addHandler(h1) 
    logger.addHandler(h2) 
関連する問題