Configuring syslog-ng in CentOS/RHEL 7
For a number of reasons, rsyslog is installed in the default CentOS, I do not like. I love when the logs are sorted by year, month, facility, priorities. So the first thing I change rsyslog in syslog-ng. To do this, do the following:
$ yum -y install syslog-ng $ nano -w /etc/syslog-ng/syslog-ng.conf @version:3.5 @include "scl.conf" #---------------------------------------------------------------------------- # /etc/syslog-ng/syslog-ng.conf: configuration file # $Revision: 0.3-r5 (CentOS Edition by Wakko Warner) $ # $Comment: Any comments please send to wakko@acmelabs.spb.ru $ #---------------------------------------------------------------------------- # Note: it also sources additional configuration files (*.conf) # located in /etc/syslog-ng/conf.d/ # Global Options options { # Enable or disable the chained hostname format chain_hostnames (off); # The number of lines buffered before written to file flush_lines (0); log_fifo_size (1000); # The default action of syslog-ng is to log a STATS line # to the file every 10 minutes. That's pretty ugly after a while. # Change it to every 12 hours so you get a nice daily update of # how many messages syslog-ng missed (0). stats_freq (43200); time_reopen (10); # The default action of syslog-ng is to log a MARK line # to the file every 20 minutes. That's seems high for most # people so turn it down to once an hour. Set it to zero # if you don't want the functionality at all. mark_freq(3600); # Enable or disable hostname rewriting keep_hostname (yes); # Enable or disable directory creation for destination files create_dirs (yes); # userid/groupid/permission value for files owner ("root"); group ("adm"); perm (0640); # userid/groupid/permission value for directories dir_owner ("root"); dir_group ("adm"); dir_perm (0750); # Enable or disable DNS usage use_dns (no); # Add Fully Qualified Domain Name instead of short hostname use_fqdn (no); long_hostnames (off); }; source s_sys { system(); internal(); # udp(ip(0.0.0.0) port(514)); }; # Sources of syslog messages (both local and remote messages on the server) source s_local { system(); internal(); }; source s_tcp { tcp (ip ("127.0.0.1") port (514) max-connections (1) ); }; source s_udp { udp (ip ("0.0.0.0") port (514)); }; # By default messages are logged to tty12... #destination d_console_all { file("/dev/tty12"); }; # ...if you intend to use /dev/console for programs like xconsole # you can comment out the destination line above that references /dev/tty12 # and uncomment the line below. #destination d_console_all { file("/dev/console"); }; #destination d_console_all { file("/dev/null"); }; destination d_console_all { program("/bin/cat >/dev/null"); }; # Destinations destination d_usertty { usertty("*"); }; destination d_everything { file("/var/log/syslog-$HOST/$YEAR-$MONTH/$FACILITY.$PRIORITY.log" template("$FULLDATE $MSGHDR$MSG\n") template_escape(no) ); }; # Filters filter f_emergency { level(emerg); }; filter f_fetchmail_warnings { not(match("fetchmail" value("PROGRAM")) and match("Warning: the connection is insecure, continuing anyways." value("MESSAGE"))); }; log { source(s_local); filter(f_emergency); destination(d_usertty); }; log { source(s_local); filter(f_fetchmail_warnings); destination(d_everything); }; log { source(s_local); filter(f_fetchmail_warnings); destination(d_console_all); }; log { source(s_tcp); destination(d_everything); }; log { source(s_tcp); destination(d_console_all); }; log { source(s_udp); destination(d_everything); }; log { source(s_udp); destination(d_console_all); }; # Source additional configuration files (.conf extension only) @include "/etc/syslog-ng/conf.d/*.conf" # vim:ft=syslog-ng:ai:si:ts=4:sw=4:et: $ systemctl stop rsyslog.service $ systemctl start syslog-ng.service $ systemctl disable rsyslog.service $ systemctl enable syslog-ng.service $ yum -y remove rsyslog
Update from 2015-12-18: Don’t forget to read this post.
Tuan
29.07.2016 - 09:27
Hi,
cd /
mkdir logcentral
I have changed the:
file(“/logcentral/syslog-$HOST/$YEAR-$MONTH/$FACILITY.$PRIORITY.log”
template(“$FULLDATE $MSGHDR$MSG\n”)
template_escape(no)
);
But it doesn’t work ? Can you help ?
Thanks,