2013-04-17 157 views

回答

-1

我認爲這將有助於:Handler.setLevel(lvl)

設置此處理程序,以拉特的門檻。記錄不如lvl嚴重的消息將被忽略。創建處理程序時,級別設置爲NOTSET(這會導致處理所有消息)。

但現在我看到你想要的東西(拆分信息/從警告/錯誤調試)

話雖這麼說,你可以寫一個自定義處理程序(一類擴展logging.StreamHandler爲例)它不會做,並覆蓋Handler.handle()方法。

+0

這是不夠的,*停止*警告消息被記錄到標準輸出*仍*。 –

+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) 
相關問題