我认为有一个默认的日志文件,但我还没有找到它。
有时 HTTP 请求进程会在屏幕上抛出异常,但我建议它也会出现在磁盘上的某个位置,否则在长时间运行测试期间我不知道出了什么问题。
PS:编写异常处理程序是另一个话题;首先我想知道我的问题的答案。
我在这里找到了一些东西: https ://groups.google.com/forum/?fromgroups=#!topic/python-tornado/px4R8Tkfa9c
但它也没有提到我在哪里可以找到这些日志。
我认为有一个默认的日志文件,但我还没有找到它。
有时 HTTP 请求进程会在屏幕上抛出异常,但我建议它也会出现在磁盘上的某个位置,否则在长时间运行测试期间我不知道出了什么问题。
PS:编写异常处理程序是另一个话题;首先我想知道我的问题的答案。
我在这里找到了一些东西: https ://groups.google.com/forum/?fromgroups=#!topic/python-tornado/px4R8Tkfa9c
但它也没有提到我在哪里可以找到这些日志。
它默认使用标准的 python 日志记录模块。
这是定义:
access_log = logging.getLogger("tornado.access")
app_log = logging.getLogger("tornado.application")
gen_log = logging.getLogger("tornado.general")
默认情况下它不会写入文件。您可以使用supervisord运行它并在 supervisord 配置中定义,日志文件将位于该位置。它将捕获龙卷风的输出并将其写入文件。
你也可以这样想:
tornado.options.options['log_file_prefix'].set('/opt/logs/my_app.log')
tornado.options.parse_command_line()
但在这种情况下 - 测量性能。如果可以委托,我不建议您直接从 tornado 应用程序写入文件。
仅供参考:parse_command_line
只启用漂亮的控制台日志记录。
使用较新的版本,您可以这样做
args = sys.argv
args.append("--log_file_prefix=/opt/logs/my_app.log")
tornado.options.parse_command_line(args)
或如@ColeMaclean 提到的,提供
--log_file_prefix=PATH
在命令行
使用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)