--- /dev/null
+# This file describes the rotation of the centralized log files in /data, from
+# all vservers.
+
+/data/log/rsyslog/*/*/*.log
+{
+ # Never throw away logfiles for now
+ rotate 999999
+ # Rotate daily
+ daily
+ # Compress rotated files
+ compress
+ # Use the rotation date as an extension
+ dateext
+ # Reload rsyslog after rotation, but only once for all scripts
+ sharedscripts
+ postrotate
+ invoke-rc.d rsyslog reload > /dev/null
+ endscript
+ # Put the rotated logs in a separate dir
+ # Disabled, since logrotate insists these directories exist before
+ # rotation (and even before running scripts...)
+ # olddir archive
+}
+
+# This logfile is mostly used for quick lookups of recent events and for
+# logcheck to parse. So we only keep one rotated version. Logcheck should be
+# able to handle the rotation gracefully this way.
+/data/log/rsyslog/all.log
+{
+ rotate 1
+ daily
+ postrotate
+ invoke-rc.d rsyslog reload > /dev/null
+ endscript
+}
$ModLoad imuxsock # provides support for local system logging
$ModLoad immark # provides --MARK-- message capability
$MarkMessagePeriod 900 # mark messages appear every 15 Minutes
+$ModLoad imtcp
+$InputTCPServerRun 514 # Accept TCP connections on the default syslog port
###########################
#### GLOBAL DIRECTIVES ####
#
$IncludeConfig /etc/rsyslog.d/*.conf
+########################
+#### Remote logging ####
+########################
+
+# Log lines received from other servers (as well as our own logs) centrally.
+$template FacilityLog,"/data/log/rsyslog/%hostname%/facilities/%syslogfacility-text%.log"
+$template SeverityLog,"/data/log/rsyslog/%hostname%/severities/%syslogseverity-text%.log"
+$template AppLog,"/data/log/rsyslog/%hostname%/apps/%app-name%.log"
+$template AllLog,"/data/log/rsyslog/all.log"
+
+# Use a verbose logging format
+$template LogFormat, "%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag% %syslogfacility-text%.%syslogseverity-text%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
+
+# Log by facility, severity and appname
+*.* ?FacilityLog;LogFormat
+*.* ?SeverityLog;LogFormat
+*.* ?AppLog;LogFormat
+# Log all entries in a single file, which is meant to be parsed by logcheck
+# (hence the traditional format).
+*.* ?AllLog;RSYSLOG_TraditionalFileFormat
#######################
#### Local logging ####
#######################
-#
+# Discard all log entries not locally generated. Newer versions of rsyslogd
+# have the $fromhost-ip property which can be checked against 127.0.0.1, which
+# is probably slightly more reliable, but this will work for now.
+if $fromhost != 'log' then ~
+
# Log each facility into its own log
auth,authpriv.* /var/log/rsyslog/auth.log
cron.* -/var/log/rsyslog/user.log
#
*.emerg *
-########################
-#### Remote logging ####
-########################
-
-# No use to send ourselvers logs