使用非文件目标的模板修改消息格式

Modify message format with template for non file destination

使用 syslog-ng (v3.3) 配置,我如何使用非文件目标的模板修改消息格式。我希望能够做这样的事情:

destination d_syslog_to_agent {
    syslog( host.name.company.com transport("udp") port(12345) template("${ISODATE} ${TAGS} ${HOST} ${MESSAGE}\n"));
};

我想在这里启用模板的原因是因为我想借助 ${TAGS} 宏来标记我的消息。如果还有其他标记方法,请告诉我。

您编写的配置应该可以完成工作。

如果您想在日志消息中添加标签,可以使用 set-tag() 重写规则。

例如:

source s_net8888
{
    network(
        ip("localhost")
        port(8888));
};

destination d_syslog_to_agent
{
    syslog(
        "localhost"
        transport("tcp")
        port(12345) 
        template("${ISODATE} ${TAGS} ${HOST} ${MESSAGE}\n"));
};

log
{
    source(s_net8888);
    rewrite 
    {
        set-tag(".mytags.test-TAG");
    };
    destination(d_syslog_to_agent);
};

向 localhost:8888 发送日志消息将在 localhost:12345 上生成以下输出:

338 <38>1 2019-01-09T13:16:13+01:00 localhost prg00000 1234 - - 2019-01-09T13:16:13+01:00 .mytags.test-TAG,.source.s_net8888 localhost seq: 0000000000, thread: 0000, runid: 1547036173, stamp: 2019-01-09T13:16:13 PADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADDPADD