программные макросы пусты в парсере 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 на самом деле нет. У меня такое ощущение, что мой синтаксический анализатор не создает программные макросы должным образом. Что я делаю не так?

0
08.12.2015, 02:43
1 ответ

Вам не нужна строка «шаблон» в парсере. Эта опция указывает, какую часть сообщения журнала вы хотите проанализировать с помощью анализатора CSV, и на данном этапе это, вероятно, значение по умолчанию ($ {MESSAGE}).

0
28.01.2020, 04:53

Теги

Похожие вопросы