2016-01-22 95 views
0

我一直在這個幾乎整天無法找到我失蹤的東西。我正在嘗試添加一個自定義處理程序以將所有日誌數據發送到GUI會話中。它可以工作,但處理程序不會擴展到子模塊,只是從主模塊發出記錄。這裏是一個小片段我試圖添加自定義處理程序與Python日誌記錄

我有兩個文件

# main.py 
import logging 

import logging_two 

def myapp(): 
    logger = logging.getLogger('myapp') 
    logging.basicConfig() 
    logger.info('Using myapp') 
    ch = logging.StreamHandler() 
    logger.addHandler(ch) 
    logging_two.testme() 
    print logger.handlers 

myapp() 

第二個模塊

#logging_two 
import logging 

def testme(): 
    logger = logging.getLogger('testme') 
    logger.info('IN test me') 
    print logger.handlers 

我希望在logging_two.testme記錄儀有我在主要添加了處理程序模塊。我看了看文件,似乎這應該工作,但我不知道如果我錯了?

結果我得到的是

[] 
[<logging.StreamHandler object at 0x00000000024ED240>] 
+0

您是如何得到結果的?在哪個模塊中使用dir()?如果你想讓testme在myapp中記錄ch,只需將ch作爲一個函數傳遞給testme'def testme(ch):' – BenJ

回答

1

myapp()您要添加的處理程序命名爲'myapp'記錄器。由於testme()正在獲取名爲'testme'的記錄器,因此它不具有處理程序,因爲它是記錄層次結構的不同部分。

如果你只有logger = logger.getLogger()myapp()那麼它會工作,因爲你是將處理程序添加到層次結構的根。

退房python logging docs.

+0

非常感謝!我的印象是,入口點總是被挑選出來,因爲根記錄器是我的不好之處。 – skar

相關問題