soft-macros estão vazias no csv parser

0

Estou tentando analisar as mensagens de log recebidas de uma porta do udp e inseri-las em um banco de dados MYSQL. Meu destino no meu arquivo syslog-ng.conf é o seguinte:

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

O analisador que escrevi é o seguinte:

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

Também estou usando um filtro para "descartar" uma determinada parte da mensagem de log:

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

Por fim, quero poder gravar o conteúdo de "column1" em um banco de dados MYSQL, mas, para fins de teste, estou atualmente gravando em um arquivo:

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

No entanto, quando eu abro o arquivo descrito em d_file, tudo o que posso ver é "Testando:" e o conteúdo da coluna1 não está lá. Eu tenho a sensação de que é porque o meu analisador não está criando as macros suaves corretamente. O que estou fazendo de errado?

    
por user141834 08.12.2015 / 01:43

1 resposta

0

Você não precisa da linha "modelo" em seu analisador. Esta opção especifica qual parte da mensagem de log você quer analisar com o analisador de CSV, e neste momento é provavelmente o padrão ($ {MESSAGE}).

    
por 28.04.2016 / 10:38