[syslog-ng] question about message parsing behavior

Balazs Scheidler bazsi at balabit.hu
Sat Mar 14 11:05:08 CET 2009


Hi Joe,

Just wanted to mention that I added coverage for this feature in a unit
test program, and now integrated to the master branch. It should be
available in tomorrow's snapshot.

On Sun, 2009-02-22 at 20:13 +0100, Balazs Scheidler wrote:
> 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