我正在运行一个Web服务器,龙卷风,我正在尝试使用以下命令将所有日志输出重定向到一个文件。但我没有在文件中看到输出。
/usr/bin/python -u index.py 2>&1 >> /tmp/tornado.log
我将-u选项传递给python解释器。我仍然没有看到任何输出记录到我的日志文件中。
但是,当我执行以下操作时,我会在stdout上看到输出
/usr/bin/python index.py
答案 0 :(得分:0)
Tornado使用内置日志记录模块。您可以轻松地将文件处理程序附加到根记录器并将其级别设置为NOTSET
,以便记录所有内容或其他级别(如果要进行过滤)。
参考文档:logging,logging.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)
通常情况下,我实际上希望抑制龙卷风的记录器(因为我有我自己的,并且无论如何都会捕获它们的异常,它们最终会污染我的日志),这就是在文件处理程序上添加过滤器的地方非常方便。