After a long discussion about potential new config formats for rsyslog, we came to the conclusion that the current format is not as bad as I thought and just needs scoping (OK, the whole story is longer, but I can’t repeat that lengthy discussion in a single blog post, see mailing list archive for details).
After some thinking, I finally started coding today.
I have begun to implement action scoping. A snapshot with partial functionality is available at
http://git.adiscon.com/?p=rsyslog.git;a=shortlog;h=refs/heads/newconf
It does NOT yet include the necessary output plugin interface change (or updated plugins), but it implements
$Begin action
$End action
$StrictScoping [on/off] — off default
So if you want to play a bit with it, feel free to do so. Note that it disallows global statements within action scope and in overall has somewhat better detection of user errors (these are easier to detect when scoping is used).
Note that scoping is purely optional: if not enabled, it will not be used. So any current rsyslog.conf remains valid.
I will see that I change the projects’s output plugins next week, and will possibly then make an experimental release.