龙卷风日志记录:"没有为记录器找到处理程序" tornado.application"

时间:2015-09-18 15:44:59

标签: tornado

我在Tornado中遇到以下错误:

No handlers could be found for logger "tornado.application"

我已经阅读了文档,似乎我需要对此进行定义:

access_log = logging.getLogger("tornado.access")
app_log = logging.getLogger("tornado.application")
gen_log = logging.getLogger("tornado.general")
然后呢?我该怎么办这些东西?错误不会消失。

另请注意,这是main()函数的第一行:

tornado.options.parse_command_line()

我还明确地添加了这个:

logging.basicConfig()

有人可以请我指出如何在龙卷风中使用日志的明确/明确的例子。

另外,我注意到我的所有200级请求都被路由到stderr而不是stdout,我该如何将它重定向到stdout。我只希望500级错误转到stderr。

1 个答案:

答案 0 :(得分:2)

不介意:

access_log = logging.getLogger("tornado.access")
app_log = logging.getLogger("tornado.application")
gen_log = logging.getLogger("tornado.general")

直接从Tornado的源代码中删除它们,以便您在文档中看到它们。你不需要将它们放在任何地方,因为它们已经被龙卷风烘烤了。您唯一需要做的就是配置记录器。

如果你去:http://docs.python-guide.org/en/latest/writing/logging/ 你会找到一种加载配置的方法。您需要在代码中添加三个部分:

1)导入依赖项:

import logging
from logging.config import dictConfig

2)将配置放在字典中(如果你想要一个更干净的代码,你可能想从文件中导入,但以后再保留):

logging_config = dict(
    version = 1,
    formatters = {
        'f': {'format':
              '%(asctime)s %(name)-12s %(levelname)-8s %(message)s'}
        },
    handlers = {
        'h': {'class': 'logging.StreamHandler',
              'formatter': 'f',
              'level': logging.DEBUG}
        },
    loggers = {
        'tornado.general': {'handlers': ['h'],
                 'level': logging.DEBUG}
        }
)

**我在python的文档中只改变了一行来处理tornado.general

3)加载配置:

dictConfig(logging_config)

这将解决您的应用程序返回的第一个问题:无法找到记录器“tornado.application”的处理程序

如果您想要一个输出到文件的配置文件的更高级示例,请检查:https://gist.github.com/blalab/d8ccd9c83f025197fac8c2a2d680c58e

关于stdout,stderror的问题,你应该把它作为一个不同的问题在SO中发布