Hors de la boîte rsyslog va tout vider dans la SystemEvents
table dans la base de données `Syslog (si vous utilisez le schéma par défaut fourni). Je voudrais utiliser une expression régulière pour filtrer les messages entrants dans des tables de base de données distinctes.
J'ai joué avec ça, mais j'ai du mal à trouver la meilleure façon d'y parvenir (ou même une manière qui fonctionne).
Dans mon rsyslog.conf:
$template wireless, \
"insert into RogueAPs \
(ReceivedAt, DeviceReportedTime, Facility, Priority, FromHost, Message) \
VALUES('%timegenerated%', '%timereported%', '%syslogfacility%', '%syslogpriority%', '%fromhost-ip%', '%msg%');", \
stdsql
if $msg contains 'subtype=wireless' then :ommysql:127.0.0.1,Syslog,dbusername,dbpassword;wireless
*.* :ommysql:127.0.0.1,Syslog,dbusername,dbpassword
C'était ma dernière tentative, mais je suis coincé.
(la table RogueAPs n'est qu'un clone de la table SystemEvents par défaut livrée avec rsyslog)
Informations sur la version:
shell# /usr/local/sbin/rsyslogd -v
rsyslogd 5.5.5, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
FEATURE_NETZIP (message compression): Yes
GSSAPI Kerberos 5 support: No
FEATURE_DEBUG (debug build, slow code): No
Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
See http://www.rsyslog.com for more information.