[syslog-ng] question about message parsing behavior
Balazs Scheidler
bazsi at balabit.hu
Sun Feb 22 20:13:43 CET 2009
On Wed, 2009-02-18 at 14:48 -0500, Joe Shaw wrote:
> Hi,
>
> What happens if a parser fails to parse a message? Let's say I have a parser:
>
> csv_parser(columns("COL1", "COL2", "COL3") delimiters(","));
>
> If I pass in "foo", does COL1 get set to "foo" and COL2 and COL3 are undefined?
Yes.
>
> If I pass in "foo,bar" is just COL3 undefined?
Yes.
>
> If I pass in "foo,bar,baz,quux" is COL3 "baz,quux" ?
No. I was planning to create a separate flag for this case, so that the
last column is greedy in case further info is available, but I have not
gotten there yet.
>
> I am wondering if I can set up a filter for messages which don't meet
> the parsing rules, so that I can use the catch-all directive for
> logging rules and filter out messages that don't match the format (in
> lieu of the tagging that was discussed in a different thread).
>
Currently parsers always match (but they could drop messages just like
filters), as one way or the other it always tries to understand the
current message. So currently, neither csv-parser nor db-parser reports
ill-formatted messages.
However db-parser can assign a "classification" tag to the message and
you can filter based on that. It is also possible to check all fields
after a csv-parser() if all got values, but I see that this could be
difficult.
Hmm.. here's an experimental patch that implements two flags: greedy and
drop-invalid:
commit d9b53cc4ae268109dc095c17dbc98bcf4df73bf9
Author: Balazs Scheidler <bazsi at balabit.hu>
Date: Sun Feb 22 20:11:13 2009 +0100
[csv-parser] implement greedy and drop-invalid flags
greedy:: the new greedy flag makes the last column of a csv-parser() greedy,
e.g. it gets all the remaining characters at the end of the parsed line.
drop-invalid:: the new drop-invalid flag makes the parser drop all messages
that do no have enough columns to fill the required number of fields.
I haven't added this to the "master" branch, but I've pushed a
csv-parser-flags branch to the public git repository, because I can't
test this right now:
http://git.balabit.hu/?p=bazsi/syslog-ng-3.0.git;a=shortlog;h=csv-parser-flags
--
Bazsi
More information about the syslog-ng
mailing list