csv 解析器中的软宏为空

csv 解析器中的软宏为空

我正在尝试解析从 udp 端口​​接收到的日志消息并将它们插入到 MYSQL 数据库中。我的 syslog-ng.conf 文件中的目标如下:

source syslog_udp {
    udp(port(<port num>) flags(no-parse));
};

我写的解析器如下:

parser p_logparser{
    csv-parser(columns("<column1>", "<column2>", ...)
    flags(strip-whitespace)
    delimiters(",")
    template("${<column1}\n")
    );
};

我还使用过滤器“丢弃”日志消息的特定部分:

filter log_filter { not (match("<string>") and match("<string>"));};

最终,我希望能够将“column1”的内容写入 MYSQL 数据库,但出于测试目的,我当前正在写入一个文件:

destination d_file {
            file("<path>/${ISODATE}" template("Testing : ${column1}"));
};
log {
            source(syslog_udp);
            parser(p_logparser);
            filter(log_filter);
            destination(d_file);
};

但是,当我打开 d_file 中描述的文件时,我只能看到“Testing :”,而 column1 的内容实际上并不存在。我有一种感觉,这是因为我的解析器没有正确创建软宏。我究竟做错了什么?

答案1

您的解析器中不需要“模板”行。此选项指定您要使用 CSV 解析器解析日志消息的哪一部分,此时这可能是默认值 (${MESSAGE})。

相关内容