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:」のみが表示され、列1の内容は実際には存在しません。私のパーサーはソフトマクロを正しく生成しないからだと思います。私は何が間違っていましたか?

ベストアンサー1

パーサーには「テンプレート」行は必要ありません。このオプションはCSVパーサーを使用するログメッセージの部分を指定し、デフォルト値($ {MESSAGE})にすることができます。

おすすめ記事