Fügen Sie dem von / var / log / messages ausgeschlossenen Syslog eine lokale Anwendung hinzu

7

Ich habe eine Anwendung, die sich bei der Syslog-Funktion local1 anmeldet. Ich möchte syslog so konfigurieren, dass alle local1-Nachrichten an eine von / var / log / messages getrennte Protokolldatei gesendet werden - das stellte sich als einfach heraus. Die Nachrichten werden aber auch an / var / log / messages gesendet. Gibt es eine Möglichkeit, syslog anzuweisen, * .info an / var / log / messages zu senden, aber local1.info auszuschließen? (So ​​etwas wie * ^ loacl1.info?)

syslog.conf:

#kern.*                                                 /dev/console

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

authpriv.*                                              /var/log/secure

local0.notice;local0.debug;mail.*;mail.none;mail.info;local0.info /var/log/maillog

cron.*                                                  /var/log/cron

*.emerg                                                 *

uucp,news.crit                                          /var/log/spooler

local7.*                                                /var/log/boot.log

#My Custom App Logging
local1.*                                             /var/log/application.log
Josh
quelle

Antworten:

8

Versuchen Sie es zu ersetzen

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

durch

*.info;mail.none;authpriv.none;cron.none;local1.!=info                /var/log/messages

Dadurch wird eine übereinstimmende Nachricht protokolliert: Jede Einrichtung mit Ebeneninfo UND Einrichtung nicht mailen UND Einrichtung nicht authpriv UND Einrichtung local1 wird ausgeführt, wenn Ebene info ist .

Radius
quelle
Ah ha - dank Ihres bearbeiteten Beitrags sehe ich jetzt, was ich will, ist local1.none, nicht local1.! = Info. Ich wusste nicht, wie sich .none verhält.
Josh
1
@Radius: Sollte das nicht 'local1.none' sein, nicht 'local1.! = Info'? Außerdem glaube ich, dass 'local1.! = Info' nicht mit allen Syslog-Daemons funktioniert. 'local1.none' ist universeller.
Stefan Lasiewski
2
@Stefan, die ursprüngliche Anfrage war, local1.info nicht alle local1-Nachricht auszuschließen. Local1.! = Info ist also die richtige Syntax. Tatsächlich musste Josh jedoch alle local1-Nachrichten (aus seinem Kommentar) ausschließen. In diesem Fall ist local1.none die richtige Syntax
Radius
2

Sie sollten entweder verwenden

#My Custom App Logging
local1.*                                             /var/log/application.log
& ~

für syslog oder

#My Custom App Logging
local1.*                                             /var/log/application.log
& stop

für rsyslog 7+, um zu verhindern, dass die Protokollnachricht weiter verarbeitet wird. Stellen Sie sicher, dass dies vor den Standardregeln steht, die *.*in / var / log / syslog protokolliert werden.

ColinM
quelle