13

我认为有一个默认的日志文件,但我还没有找到它。

有时 HTTP 请求进程会在屏幕上抛出异常,但我建议它也会出现在磁盘上的某个位置,否则在长时间运行测试期间我不知道出了什么问题。

PS:编写异常处理程序是另一个话题;首先我想知道我的问题的答案。

我在这里找到了一些东西: https ://groups.google.com/forum/?fromgroups=#!topic/python-tornado/px4R8Tkfa9c

但它也没有提到我在哪里可以找到这些日志。

4

4 回答 4

19

它默认使用标准的 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只启用漂亮的控制台日志记录

于 2012-09-26T07:41:28.250 回答
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 

在命令行

于 2013-04-01T02:31:14.773 回答
1

默认情况下没有日志文件。

您可以使用--log_file_prefix=PATH命令行选项来设置一个。

Tornado 只使用Python 标准库的日志记录模块,如果您尝试做任何更复杂的事情。

于 2012-09-26T07:42:05.807 回答
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)
于 2017-12-14T05:55:59.473 回答