配置 uwsgi 以在单独的行上输出 json 编码的日志
Configuring uwsgi to output json encoded logs on separate lines
我希望 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:
Encoders can be added by plugins, and can be enabled in chain (the output of an encoder will be the input of the following one and so on).
有一个内置的换行编码器,所以我们可以将它与 json 编码器结合起来,如下所示:
[uwsgi]
log-encoder = json {"unix":${unix}, "msg":"${msg}"}
log-encoder = nl
我希望 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:
Encoders can be added by plugins, and can be enabled in chain (the output of an encoder will be the input of the following one and so on).
有一个内置的换行编码器,所以我们可以将它与 json 编码器结合起来,如下所示:
[uwsgi]
log-encoder = json {"unix":${unix}, "msg":"${msg}"}
log-encoder = nl