Python重定向日志

时间:2013-02-12 03:51:23

标签: python tornado

我正在运行一个Web服务器,龙卷风,我正在尝试使用以下命令将所有日志输出重定向到一个文件。但我没有在文件中看到输出。

/usr/bin/python -u index.py 2>&1 >> /tmp/tornado.log

我将-u选项传递给python解释器。我仍然没有看到任何输出记录到我的日志文件中。

但是,当我执行以下操作时,我会在stdout上看到输出

/usr/bin/python index.py

1 个答案:

答案 0 :(得分:0)

Tornado使用内置日志记录模块。您可以轻松地将文件处理程序附加到根记录器并将其级别设置为NOTSET,以便记录所有内容或其他级别(如果要进行过滤)。

参考文档:logginglogging.handlers

与Tornado的日志记录一起使用的示例:

import logging
# the root logger is created upon the first import of the logging module

# create a file handler to add to the root logger
filehandler = logging.FileHandler(
    filename = 'test.log', 
    mode = 'a', 
    encoding = None, 
    delay = False
)

# set the file handler's level to your desired logging level, e.g. INFO
filehandler.setLevel(logging.INFO)

# create a formatter for the file handler
formatter = logging.Formatter('%(asctime)s.%(msecs)d  [%(name)s](%(process)d): %(levelname)s: %(message)s')

# add filters if you want your handler to only handle events from specific loggers 
# e.g. "main.sub.classb" or something like that. I'll leave this commented out.
# filehandler.addFilter(logging.Filter(name='root.child'))

# set the root logger's level to be at most as high as your handler's
if logging.root.level > filehandler.level:
    logging.root.setLevel = filehandler.level

# finally, add the handler to the root. after you do this, the root logger will write
# records to file.
logging.root.addHandler(filehandler)

通常情况下,我实际上希望抑制龙卷风的记录器(因为我有我自己的,并且无论如何都会捕获它们的异常,它们最终会污染我的日志),这就是在文件处理程序上添加过滤器的地方非常方便。