【问题标题】:Where can I check tornado's log file?我在哪里可以查看 tornado 的日志文件?
【发布时间】:2012-09-26 01:47:03
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 如果你在 linux 中,为什么不将控制台发送到文件(使用 > 或 >>)

标签: python tornado


【解决方案1】:

它默认使用标准的python日志模块。

这里是definition

access_log = logging.getLogger("tornado.access")
app_log = logging.getLogger("tornado.application")
gen_log = logging.getLogger("tornado.general")

默认情况下它不会写入文件。您可以使用supervisord 运行它并在supervisord 配置中定义日志文件所在的位置。它将捕获龙卷风的输出并将其写入文件。

你也可以想this way:

tornado.options.options['log_file_prefix'].set('/opt/logs/my_app.log')
tornado.options.parse_command_line()

但在这种情况下 - 衡量绩效。如果可以委托,我不建议您直接从 tornado 应用程序写入文件。

仅供参考:parse_command_line 仅启用 pretty console logging

【讨论】:

  • @ColeMaclean 以为你不在 :)
  • @NikolayFominyh 感谢您的意见。当您说将日志委托给 supervisord 通过在龙卷风中执行此操作有助于防止性能下降时,您是说 supervisord 在刷新到适当的文件之前对其进行缓冲?您能否详细说明性能原因?
  • +1 不仅是一个快速的解决方案,还有如何做得更好的信息! @Ethan:supervisord 使用子进程,而不是阻塞主线程(同时将日志条目写入磁盘)。
【解决方案2】:

使用较新的版本,您可以这样做

args = sys.argv
args.append("--log_file_prefix=/opt/logs/my_app.log")
tornado.options.parse_command_line(args)

或者正如@ColeMaclean 提到的,提供

--log_file_prefix=PATH 

在命令行

【讨论】:

    【解决方案3】:

    默认没有日志文件。

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

    Tornado 只使用 Python stdlib's logging module,如果您尝试做更复杂的事情。

    【讨论】:

      【解决方案4】:

      使用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)
      

      【讨论】:

        猜你喜欢
        • 2011-01-15
        • 1970-01-01
        • 2022-08-17
        • 2020-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-09
        • 1970-01-01
        相关资源
        最近更新 更多