Ich habe mehrere Anwendungen und Skripte, mit denen ich die Ausgabe in benutzerdefinierte Dateien umleiten möchte.
Ich starte diese Anwendungen mit
command | logger -t TAG
Ich möchte diese Nachrichten basierend auf ihren Tags filtern und sie in verschiedene Dateien umleiten. Ich möchte die Bash-Umleitung nicht verwenden, da diese Anwendungen hauptsächlich lange ausgeführt werden und eine ordnungsgemäße Protokollrotation benötigen.
Ich habe versucht, einen benutzerdefinierten Filter in /etc/rsyslog.d/60-myfilter.conf hinzuzufügen.
if $syslogtag == 'giomanager' then /var/log/giomanager.log
Was mache ich falsch ? Was ist der richtige Weg, um basierend auf dem Tag zu filtern, oder gibt es eine bessere Option, um ein ähnliches Ergebnis zu erzielen?
/var/log/giomanager.log
/var/log/giomanager.log
aber es wird immer noch in / var / log / syslog geschrieben. Haben Sie eine Idee, warum dies geschieht und wie Sie dies verhindern können?Also habe ich endlich eine Lösung für mein Problem gefunden.
Vielen Dank an @lain für die Führung.
Die zuvor angegebene Lösung besteht darin, ein ':' in den Tag-Namen aufzunehmen. Auch und dies ist sehr wichtig, muss der Dateiname
50-default.conf
in alphabetischer Reihenfolge vor sein.Um fortzufahren, geben Sie Folgendes ein
30-giomanager.conf
:Beachten Sie, dass die Datei
/var/log/giomanager.log
vom Benutzer 'syslog' beschreibbar sein sollte.quelle
startswith
anstelle von verwenden,isequal
wenn das Tag beispielsweise eine PID enthält. Oderregex
für komplexe Spiele.