2016-02-10 88 views
2

我有一個包依賴於幾個不同的模塊,每個模塊都建立了自己的記錄器。這允許我記錄每條日誌消息的來源,這很有用。更改級別記錄到IPython/Jupyter筆記本

但是,當在IPython/Jupyter筆記本中使用此代碼時,我無法控制打印到屏幕上的內容。具體來說,我收到了許多我不想看到的DEBUG級消息。

如何更改打印到筆記本的日誌級別?

更多信息:

我試圖建立一個根記錄在筆記本如下:

# In notebook 
import logging 
logging.basicConfig() 
logger = logging.getLogger() 
logger.setLevel(logging.INFO) 
# Import the module 
import mymodule 

,然後在我的模塊上,我有

# In mymodule.py 
import logging 
logger = logging.getLogger('mypackage.' + __name__) 
logger.setLevel(logging.DEBUG) 
logger.propagate = True 
# Log some messages 
logger.debug('debug') 
logger.info('info') 

當在筆記本中調用模塊代碼時,我希望日誌得到傳播,然後讓頂部記錄器只打印信息日誌語句。但是調試和信息日誌語句都顯示出來了。

相關鏈接:

回答

4

這個問題的根本原因(從https://github.com/ipython/ipython/issues/8282)是筆記本默認創建一個根記錄(這是從IPython的默認行爲不同!)。解決的辦法是讓在筆記本記錄的處理器,並設置其級別:

# At the beginning of the notebook 
import logging 
logger = logging.getLogger() 
assert len(logger.handlers) == 1 
handler = logger.handlers[0] 
handler.setLevel(logging.INFO) 

有了這個,我並不需要設置模塊logger.propagate = True和它的作品。