【问题标题】:Flask, WSGI: Pass log parameters to ApacheFlask,WSGI:将日志参数传递给 Apache
【发布时间】:2014-02-20 13:59:30
【问题描述】:

我有一个使用 mod WSGI 在 Apache 上运行的 Flask 应用程序。我正在尝试使用它的记录器从应用程序记录一条简单的消息:

app.logger.name="users server"
app.logger.setLevel(logging.DEBUG)
app.logger.debug("my log message")

Apache 日志中的结果是:

[Thu Feb 20 12:54:42.853231 2014] [:error] [pid 19461:tid 140399641954048] DEBUG:users server:my log message

在从 Flask 通过 WSGI 到 Apache 的路径上,日志元数据丢失了。 Apache 显示 [:error] 而不是 DEBUG 并且名称是 [pid 19461:tid 140399641954048] 而不是 users server。日志数据在日志行末尾显示为未解析的文本。

如何设置 WSGI、Apache 和 Flask 来解析来自 Flask 应用程序的日志?

【问题讨论】:

    标签: logging apache2 flask mod-wsgi wsgi


    【解决方案1】:

    没有将日志记录模块日志级别映射到 Apache 级别,因为它会导致各种微妙的问题,这会让您摸不着头脑,因为 Apache 日志级别会覆盖事物并抑制,为什么您没有从 Python 获取日志消息输出。

    您目前得到的是因为日志记录模块只是简单地记录到 stderr,在 mod_wsgi 下,它被记录在 Apache 错误日志中的“错误”下,Apache 在每一行都粘贴了自己的日志消息前缀。

    您仍然可以使用输出格式化程序来控制您在消息部分中看到的内容,但您不能替换 Apache 在每一行放置的前缀。

    【讨论】:

    • +1 谢谢。奇怪的是,Apache 甚至无法确定模块名称,而是使用 PID 和 TID。我会尝试在VirtualHost 配置中更改它。
    • mod_wsgi 模块尚未更新以支持新的 httpd2.4 API,用于将 Apache 模块名称声明为日志记录的一部分。
    • 好的,也许 WSGI 模块的不同日志文件会起作用。我将配置 Apache 以省略其打印输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2017-05-05
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多