我希望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。
我通过阅读the docs找到了答案:
编码器可以通过插件添加,并且可以在链中启用(编码器的输出将是下一个的输入,依此类推)。
有一个内置换行编码器,所以我们可以将它与json编码器结合起来,如下所示:
[uwsgi]
log-encoder = json {"unix":${unix}, "msg":"${msg}"}
log-encoder = nl