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})にすることができます。