# Example configuration file for syslog-ng # The default s_src source is supposed to exist and contain at least system() # This file should be copied to your /etc/syslog-ng/conf.d directory # # Don't forget to logrotate! (included in logrotate.d/bastion-syslog) # # Also don't forget to exclude bastion logs from system-wide logs, by excluding # the filter(f_bastion) from those, under debian it usually means: # # filter f_syslog3 { not facility(auth, authpriv, mail) and not filter(f_debug) and not filter(f_bastion); }; # filter f_messages { level(info,notice,warn) and # not facility(auth,authpriv,cron,daemon,mail,news) and not filter(f_bastion); }; # we define destinations, might be a good idea to log to a remote syslog in addition to locally destination d_bastion_all { file("/var/log/bastion/bastion.log" perm(0640) dir_perm(0750) create_dirs(yes) ); }; destination d_bastion_warn { file("/var/log/bastion/bastion-warn.log" perm(0640) dir_perm(0750) create_dirs(yes) ); }; destination d_bastion_die { file("/var/log/bastion/bastion-die.log" perm(0640) dir_perm(0750) create_dirs(yes) ); }; destination d_bastion_security { file("/var/log/bastion/bastion-security.log" perm(0640) dir_perm(0750) create_dirs(yes) ); }; # this filter catches all bastion syslogs filter f_bastion { facility(local7); match("bastion" value("PROGRAM") type("string")); }; # split message just to get the msgtype and filter on it parser p_bastion_msg { csv-parser(columns("BASTION.MSGTYPE", "BASTION.PAYLOAD") delimiters(" ") flags(greedy) flags(escape-none) ); }; # then the 3 specific message types filter f_bastion_warn { filter(f_bastion); match("warn" value("BASTION.MSGTYPE") type("string")); }; filter f_bastion_die { filter(f_bastion); match("die" value("BASTION.MSGTYPE") type("string")); }; filter f_bastion_security { filter(f_bastion); match("security" value("BASTION.MSGTYPE") type("string")); }; # finally, we use our filters and destinations here log { source(s_src); parser(p_bastion_msg); filter(f_bastion); destination(d_bastion_all); }; log { source(s_src); parser(p_bastion_msg); filter(f_bastion_warn); destination(d_bastion_warn); }; log { source(s_src); parser(p_bastion_msg); filter(f_bastion_die); destination(d_bastion_die); }; log { source(s_src); parser(p_bastion_msg); filter(f_bastion_security); destination(d_bastion_security); };