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})일 수 있습니다.

관련 정보