2015-12-26 22 views
1

幾天前,我發現奇怪的日誌記錄問題與Tornado一起工作。龍捲風協同程序中的Python日誌記錄問題

我有一組文件:

main.py:

1 import logging 
2 import logging.config 
3 import os 

4 from somemodule.mod import ModClass 
5 from tornado import ioloop 

6 if __name__ == "__main__": 
7  logging.config.fileConfig("logging.ini") 
8  print ioloop.IOLoop.current().run_sync(ModClass.my_coroutine) 

logging.ini:

1 [loggers] 
2 keys=root 

3 [logger_root] 
4 level=NOTSET 
5 handlers=file 

6 [handlers] 
7 keys=file 

8 [handler_file] 
9 level=DEBUG 
10 formatter=default 
11 class=handlers.TimedRotatingFileHandler 
12 args=('/tmp/some-system.log', 'D', 1, 7) 

13 [formatters] 
14 keys=default 

15 [formatter_default] 
16 format=%(asctime)s [%(levelname)s] %(name)[email protected]%(lineno)d: %(message)s 

somemodule/mod.py:

1 import logging 
2 from tornado import gen 

3 logger = logging.getLogger(__name__) 

4 class ModClass(object): 

5  @classmethod 
6  @gen.coroutine 
7  def my_coroutine(cls): 
8   # logger = logging.getLogger(__name__) 
9   logger.critical("SOME MESSAGE") 
10   raise gen.Return("Some string") 

另外,我在某個模塊目錄中有一個空_ _init_ _.py。

如果我跑main.py,我看到了「一些字符串」控制檯,我已經創建了一個,但文件/tmp/some-system.log。我不知道這個小系統有什麼問題。

爲了使它正常工作,我必須在文件somemodule/mod.py中註釋行(3)和取消註釋行(8)。

有沒有人知道如何使模塊記錄器工作,而無需在模塊中的每個功能中聲明它?在這個簡單的例子中,這種奇怪行爲的原因是什麼?

P.S.我的環境:
的Python 2.7.6
龍捲風== 3.1.1

回答

1

您需要調用fileConfig更改爲fileConfig("logging.ini", disable_existing_loggers=False)如記錄here

+0

我無法理解的是它爲什麼這樣做?即使在Tornado初始化日誌供自己使用的情況下,爲什麼它打破了現有的日誌配置? – frist