配置uwsgi以在单独的行上输出json编码的日志

时间:2018-08-15 03:38:00

标签: uwsgi

我希望uwsgi在json的不同行上输出日志消息。我尝试将以下内容添加到uwsgi.ini文件中:

[uwsgi]
log-encoder = json {"unix":${unix}, "msg":"${msg}"}

但随后所有日志都被一行粘在一起:

$ uwsgi --ini uwsgi.ini
{"unix":1534303044, "msg":"nodename: RC00W00K3HTD6"}{"unix":1534303044, "msg":"machine: x86_64"}{"unix":1534303044, "msg":"clock source: unix"}{"unix":1534303044, "msg":"pcre jit disabled"}{"unix":1534303044, "msg":"detected number of CPU cores: 8"}

如果我将--log-encoder作为uwsgi的命令行参数传递给我,则可以在单独的行上输出它:

uwsgi --ini uwsgi.ini --log-encoder=$'json {"unix":${unix}, "msg":"${msg}"}\n'

但是,我希望所有配置都保存在一个.ini文件中。我尝试将\n添加到行尾,如下所示:

[uwsgi]
log-encoder = json {"unix":${unix}, "msg":"${msg}"}\n

但这只会导致\n在消息之间打印。

我正在运行uwsgi v2.0.17.1。

1 个答案:

答案 0 :(得分:0)

我通过实际阅读the docs找到了答案:

  

编码器可以由插件添加,并且可以链式启用(编码器的输出将是以下编码器的输入,依此类推)。

有一个内置的换行编码器,因此我们可以将其与json编码器结合起来,如下所示:

[uwsgi]
log-encoder = json {"unix":${unix}, "msg":"${msg}"}
log-encoder = nl