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

问题描述 投票:0回答:1

我希望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。

uwsgi
1个回答
0
投票

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

编码器可以通过插件添加,并且可以在链中启用(编码器的输出将是下一个的输入,依此类推)。

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

[uwsgi]
log-encoder = json {"unix":${unix}, "msg":"${msg}"}
log-encoder = nl
© www.soinside.com 2019 - 2024. All rights reserved.