Starting with version 6.1.0, rsyslog supports different scopes inside rsyslog.conf. Earlier versions had only a single, global scope, where each configuration command affected that global scope. This resulted in rather complex configurations. Also many users, even the rsyslog authors, were sometimes not sure what belonged together. So we started an effort to redo the configuration language. The initial effort, available in 6.1.0, is scoping for actions. Now, an action can be defined in its own scope and it will always get a fresh environment, not affected by any config settings outside of that action definition. Similarly, config statements issues within the scope do not affect the global scope. This is the recommended ways of defining actions.
However, the previous mode is still supported and any valid pre-v6 config is a valid v6 config as well. For those interested in more strict scoping, the "$StrictScoping on" directive can be used to force the use of scopes inside rsyslog.conf. If given, actions and action directives can not be specified outside of action scopes.
Nestings of scope is not permitted. Each $Begin must be matched by a $End. This is currently not enforced in all cases (end of file), but is considered a syntax error which later versions of rsyslog will most probably detect.
Note that scoping is in its infancy. Expect changes, and most importantly enhancements. Currently, scoping is only supported for actions. As a next step, scoping for inputs is planned. Feedback on the scoping feature is appreciated.
This documentation is part of the rsyslog
project.
Copyright © 2010 by Rainer Gerhards and
Adiscon.
Released under the GNU GPL version 3 or higher.