我认为有一个默认的日志文件,但我还没找到它。
有时HTTP请求进程会在屏幕上引发异常,但我建议它也会在磁盘上某处或者在长时间运行测试中我不知道出了什么问题。
P.S。:写一个异常处理程序是另一个话题;首先,我想知道我的问题的答案。
我在这里找到了一些东西: https://groups.google.com/forum/?fromgroups=#!topic/python-tornado/px4R8Tkfa9c
但它也没有提到我在哪里可以找到这些日志。
答案 0 :(得分:19)
默认使用标准的python日志记录模块。
以下是definition:
access_log = logging.getLogger("tornado.access")
app_log = logging.getLogger("tornado.application")
gen_log = logging.getLogger("tornado.general")
默认情况下,它不会写入文件。您可以使用supervisord运行它并在supervisord config中定义日志文件所在的位置。它将捕获龙卷风的输出并将其写入文件。
您也可以考虑this way:
tornado.options.options['log_file_prefix'].set('/opt/logs/my_app.log')
tornado.options.parse_command_line()
但在这种情况下 - 衡量表现。如果可以委托,我建议您不要直接从龙卷风应用程序写入文件。
答案 1 :(得分:3)
对于较新的版本,您可以
args = sys.argv
args.append("--log_file_prefix=/opt/logs/my_app.log")
tornado.options.parse_command_line(args)
或@ColeMaclean提到,提供
--log_file_prefix=PATH
在命令行
答案 2 :(得分:1)
默认情况下没有日志文件。
您可以使用--log_file_prefix=PATH
命令行选项设置一个。
龙卷风只是使用Python stdlib's logging module,如果你想做更复杂的事情。
答案 3 :(得分:0)
使用RotatingFileHandler
:
import logging
from logging.handlers import RotatingFileHandler
log_path = "/path/to/tornado.access.log"
logger_ = logging.getLogger("tornado.access")
logger_.setLevel(logging.INFO)
logger_.propagate = False
handler = RotatingFileHandler(log_path, maxBytes=1024*1024*1024, backupCount=3)
handler.setFormatter(logging.Formatter("[%(name)s][%(asctime)s][%(levelname)s][%(pathname)s:%(lineno)d] > %(message)s"))
logger_.addHandler(handler)