Pour la conf, cf http://www.rsyslog.com/doc-rsyslog_conf.html
Toutes les lignes sont de la forme
filtre action
où action peut être un fichier (si préfixé par -, ça évite un sync à chaque écriture, important pour les logs fréquemment ouverts) ou un user.
Un même filtre peut avoir plusieurs actions, par ex
*.crit /var/log/critical.log & root
loggue dans un fichier et envoie à root.
facility : auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (idem auth), syslog, user, uucp, local0 → local7
priority : debug, info, notice, warning, warn (idem warning), err, error (idem err), crit, alert, emerg, panic (idem emerg).
Pour le filtre, on peut en mettre plusieurs, par ex
*.err;mail.none
⇒ tous les messages d'erreur (ou supérieurs, donc crit alert et emerg compris) sauf mail.errkern.=warn
⇒ les warnings du kernel (mais pas les priority sup)mail.*;mail.!=info /var/log/mail_but_info.log
⇒ tous les mail sauf info (idem mail.=debug;mail.notice
)# on peut s'étaler sur plusieurs lignes *.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages # ça sélectionne les info, notice et warning sauf pour auth, etc.
On peut aussi utiliser des expressions pour filtrer d'après le contenu du message, par exemple
*.err /var/log/error.log :msg, contains, "on s'en fout" ~ *.* /var/log/almost_all_errors.log
le ~ en fin de ligne vire les lignes concernées (pour toutes les directives qui suivront), ne pas mettre ce ~ ne garderait que les lignes concernées par le filtre (messages qui contiendraient la chaine “on s'en fout”).