正确的 rsyslog 配置

正确的 rsyslog 配置

我有 Debian 8 (Jessie),需要将消息写入日志。假设我有一个发送到 syslog 的程序:

#include <syslog.h>
int main()
{
   openlog("progname", LOG_CONS, LOG_USER);
   const char* msg = "{\"dt\":\"1670932865\",\"msg\":\"OK\"}";
   syslog(LOG_INFO, "%s", msg);
   closelog();
}

部分/etc/rsyslog.conf

template(name="outfmt" type="list") {
    property(name="msg")
}
if $programname startswith "progname" then {
    action(type="omfile" file="/path/to/file.log" template="outfmt")
    & stop
}

在日志文件中我看到:

{"dt":"1670932865","msg":"OK"} {"dt":"1670932865","msg":"OK"}

所有消息都是一行的一部分。我必须在配置/程序中做哪些更改才能有多行而不是一行?

相关内容