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