General settings
You can use the following directives throughout the configuration file. The NXLog Agent configuration parser processes these directives and substitutes values before loading the configuration.
The following directives can be used throughout the configuration file. These directives are handled by the configuration parser, and substitutions occur before the configuration check.
- define
-
Use this directive to configure a constant or macro to be used later. Refer to a
define
by surrounding the name with percent signs (%
). Enclose a group of statements with curly braces ({}
).Example 1. Using the define directiveThis configuration shows three example defines:
BASEDIR
is a constant,IMPORTANT
is a statement, andWARN_DROP
is a group of statements.nxlog.confdefine BASEDIR /var/log define IMPORTANT if $raw_event =~ /important/ \ $Message = 'IMPORTANT ' + $raw_event; define WARN_DROP { log_warning("dropping message"); drop(); } <Input messages> Module im_file File '%BASEDIR%/messages' </Input> <Input proftpd> Module im_file File '%BASEDIR%/proftpd.log' <Exec> %IMPORTANT% if $raw_event =~ /dropme/ %WARN_DROP% </Exec> </Input>
- envvar
-
This directive works like define, except that the value is retrieved from the environment.
Example 2. Using the envvar directiveThis example is like the previous one, but
BASEDIR
is fetched from the environment instead.nxlog.confenvvar BASEDIR <Input file> Module im_file File '%BASEDIR%/messages' </Input>
- include
-
This directive allows a specified file or files to be included in the current NXLog Agent configuration. Wildcarded filenames are supported.
The SpoolDir directive only takes effect after the configuration is parsed, so relative paths specified with the include directive must be relative to the working directory NXLog Agent was started from. The examples below provide various ways of using the include directive.
Example 3. Using the include directiveThis example includes a file relative to the working directory.
nxlog.confinclude modules/module1.conf
In case multiple
.conf
files are to be defined, they can be saved in thenxlog.d
directory and then automatically included in the NXLog Agent configuration along with thenxlog.conf
file. Adding.conf
files in thenxlog.d
directory extends the NXLog Agent configuration, without needing to modify the mainnxlog.conf
file.This solution could be useful to specify OS-specific configuration snippets (like windows2003.conf
) or application-specific snippets (such assyslog.conf
).Inclusion of subdirectories inside the configuration directory is not supported.
Example 4. Including Files With Wildcarded NamesThis example includes all matching files from the
nxlog.d
directory and uses absolute paths on Unix-like systems and Windows.nxlog.confinclude /etc/nxlog.d/*.conf
nxlog.confinclude C:\Program Files\nxlog\conf\nxlog.d\*.conf
- include_stdout
-
Use this directive to load dynamic configuration from the standard output of a command or script. include_stdout behaves like a command-line interface and accepts a path to a command or script file. It does not support arguments or executing external scripts, such as PowerShell, directly. However, you can encapsulate scripts in a command file.
Example 5. Using the include_stdout directiveThis example executes a bash script to load dynamic NXLog Agent configuration.
nxlog.confinclude_stdout /opt/nxlog/etc/fetch_conf.sh
See Load data from a file or script in the NXLog Platform User Guide for further examples.
- setenv
-
This directive sets an environment variable for the nxlog process. The value must be in the format
<VAR_NAME>=<VAR_VALUE>
.Example 6. Using the setenv directiveThis example creates an environment variable named
KRB5_KTNAME
and assigns it the valueC:\Program Files\nxlog\krb\krb5.keytab
.nxlog.confsetenv KRB5_KTNAME=C:\Program Files\nxlog\krb\krb5.keytab