Yeah, that's why I as always opposed against "rest" and similar approaches. But there was so much pressure to have them, so I gave in. Now we see that it really doesn't work out ;)
The longer term solution (summer?) is what I am currently working on. It'll solve these problems. Rainer 2015-04-03 5:51 GMT+02:00 David Lang <[email protected]>: > I'm getting back to looking at the cisco log parsing problem and I'm seeing > odd behavior with the matching. I initially thought that it was tied to the > descent stuff, but then testing just that subset and I'm seeing issues > related to the 'rest' type. > > with the command: > echo "Outside:6.65.60.79/53 (6.65.60.79/53)" |/usr/lib/lognorm/lognormalizer > -r rules > > any of the following three lines will match if I comment out the other two > > rule=:%iface:char-to:\x3a%\x3a%ip:ipv4%/%port:number% (%label2:char-to:)%) > > rule=:%iface:char-to:\x3a%\x3a%ip:ipv4%/%port:number% > (%label2:char-to:)%)%tail:rest% > > rule=:%iface:char-to:\x3a%\x3a%ip:ipv4%/%port:number%%tail:rest% > > The later lines override the earlier ones. > > I would expect that the first line would be the one used as it's the best > match. > > According to our earlier discussion, the second line should not match > because there is nothing left to match after the ), but in this test it does > and tail="" > > However, the real problem is that the last line is being preferred over the > others, rest is not a last-chance match, it's being matched in preference to > the ' (' literal text. it doesn't matter what the order is (including when > this is used as a descent target where the order sometimes matters) > > the system is running liblognorm1 1.1.1-0adiscon1trusty1 amd64 > > David Lang > > To normalize: 'Outside:6.65.60.79/53 (6.65.60.79/53)' > liblognorm: 0: prefix compare succeeded, still valid > liblognorm: 0:trying parser for field 'iface': 0x7ffabbbd4870 > liblognorm: parser returns 0, parsed 7 > liblognorm: potential hit, trying subtree > liblognorm: 7: prefix compare ':', ':' > liblognorm: 8: prefix compare succeeded, still valid > liblognorm: 8:trying parser for field 'ip': 0x7ffabbbd6840 > liblognorm: parser returns 0, parsed 10 > liblognorm: potential hit, trying subtree > liblognorm: 18: prefix compare '/', '/' > liblognorm: 19: prefix compare succeeded, still valid > liblognorm: 19:trying parser for field 'port': 0x7ffabbbd4530 > liblognorm: parser returns 0, parsed 2 > liblognorm: potential hit, trying subtree > liblognorm: 21: prefix compare succeeded, still valid > liblognorm: 21:trying parser for field 'tail': 0x7ffabbbd63a0 > liblognorm: parser returns 0, parsed 16 > liblognorm: potential hit, trying subtree > liblognorm: 37 returns 0 > liblognorm: 21: parser matches at 21 > liblognorm: 21 returns 0 > liblognorm: 19: parser matches at 19 > liblognorm: 19 returns 0 > liblognorm: 8: parser matches at 8 > liblognorm: 8 returns 0 > liblognorm: 0: parser matches at 0 > liblognorm: 0 returns 0 > liblognorm: final result for normalizer: left 0, endNode 0x7ffabe37b210, > isTerminal 1, tagbucket (nil) > normalized: '[cee@115 tail=" (6.65.60.79/53)" port="53" ip="6.65.60.79" > iface="Outside"]' > [cee@115 tail=" (6.65.60.79/53)" port="53" ip="6.65.60.79" iface="Outside"] > > comment out the last line > > To normalize: 'Outside:6.65.60.79/53 (6.65.60.79/53)' > liblognorm: 0: prefix compare succeeded, still valid > liblognorm: 0:trying parser for field 'iface': 0x7f41f814e870 > liblognorm: parser returns 0, parsed 7 > liblognorm: potential hit, trying subtree > liblognorm: 7: prefix compare ':', ':' > liblognorm: 8: prefix compare succeeded, still valid > liblognorm: 8:trying parser for field 'ip': 0x7f41f8150840 > liblognorm: parser returns 0, parsed 10 > liblognorm: potential hit, trying subtree > liblognorm: 18: prefix compare '/', '/' > liblognorm: 19: prefix compare succeeded, still valid > liblognorm: 19:trying parser for field 'port': 0x7f41f814e530 > liblognorm: parser returns 0, parsed 2 > liblognorm: potential hit, trying subtree > liblognorm: 21: prefix compare ' ', ' ' > liblognorm: 22: prefix compare '(', '(' > liblognorm: 23: prefix compare succeeded, still valid > liblognorm: 23:trying parser for field 'label2': 0x7f41f814e870 > liblognorm: parser returns 0, parsed 13 > liblognorm: potential hit, trying subtree > liblognorm: 36: prefix compare ')', ')' > liblognorm: 37: prefix compare succeeded, still valid > liblognorm: 37:trying parser for field 'tail': 0x7f41f81503a0 > liblognorm: parser returns 0, parsed 0 > liblognorm: potential hit, trying subtree > liblognorm: 37 returns 0 > liblognorm: 37: parser matches at 37 > liblognorm: 37 returns 0 > liblognorm: 23: parser matches at 23 > liblognorm: 23 returns 0 > liblognorm: 19: parser matches at 19 > liblognorm: 19 returns 0 > liblognorm: 8: parser matches at 8 > liblognorm: 8 returns 0 > liblognorm: 0: parser matches at 0 > liblognorm: 0 returns 0 > liblognorm: final result for normalizer: left 0, endNode 0x7f41f97df170, > isTerminal 1, tagbucket (nil) > normalized: '[cee@115 tail="" label2="6.65.60.79/53" port="53" > ip="6.65.60.79" iface="Outside"]' > [cee@115 tail="" label2="6.65.60.79/53" port="53" ip="6.65.60.79" > iface="Outside"] > > and finally just the first line > > To normalize: 'Outside:6.65.60.79/53 (6.65.60.79/53)' > liblognorm: 0: prefix compare succeeded, still valid > liblognorm: 0:trying parser for field 'iface': 0x7fb1029a9870 > liblognorm: parser returns 0, parsed 7 > liblognorm: potential hit, trying subtree > liblognorm: 7: prefix compare ':', ':' > liblognorm: 8: prefix compare succeeded, still valid > liblognorm: 8:trying parser for field 'ip': 0x7fb1029ab840 > liblognorm: parser returns 0, parsed 10 > liblognorm: potential hit, trying subtree > liblognorm: 18: prefix compare '/', '/' > liblognorm: 19: prefix compare succeeded, still valid > liblognorm: 19:trying parser for field 'port': 0x7fb1029a9530 > liblognorm: parser returns 0, parsed 2 > liblognorm: potential hit, trying subtree > liblognorm: 21: prefix compare ' ', ' ' > liblognorm: 22: prefix compare '(', '(' > liblognorm: 23: prefix compare succeeded, still valid > liblognorm: 23:trying parser for field 'label2': 0x7fb1029a9870 > liblognorm: parser returns 0, parsed 13 > liblognorm: potential hit, trying subtree > liblognorm: 36: prefix compare ')', ')' > liblognorm: 37: prefix compare succeeded, still valid > liblognorm: 37 returns 0 > liblognorm: 23: parser matches at 23 > liblognorm: 23 returns 0 > liblognorm: 19: parser matches at 19 > liblognorm: 19 returns 0 > liblognorm: 8: parser matches at 8 > liblognorm: 8 returns 0 > liblognorm: 0: parser matches at 0 > liblognorm: 0 returns 0 > liblognorm: final result for normalizer: left 0, endNode 0x7fb1033027f0, > isTerminal 1, tagbucket (nil) > normalized: '[cee@115 label2="6.65.60.79/53" port="53" ip="6.65.60.79" > iface="Outside"]' > [cee@115 label2="6.65.60.79/53" port="53" ip="6.65.60.79" iface="Outside"] > _______________________________________________ > rsyslog mailing list > http://lists.adiscon.net/mailman/listinfo/rsyslog > http://www.rsyslog.com/professional-services/ > What's up with rsyslog? Follow https://twitter.com/rgerhards > NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of > sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T > LIKE THAT. _______________________________________________ rsyslog mailing list http://lists.adiscon.net/mailman/listinfo/rsyslog http://www.rsyslog.com/professional-services/ What's up with rsyslog? Follow https://twitter.com/rgerhards NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE THAT.

