
Ich versuche, ein Bash-Skript dazu zu bringen, mit Syslog unter Centos Version 6.5 in eine benutzerdefinierte Protokolldatei zu protokollieren, aber die Protokollierung erfolgt immer nur wie /var/log/messages
folgt:
Jan 12 09:54:47 localhost nbsp: Test message blah!
Was mache ich falsch? Warum erfolgt keine Anmeldung bei /var/log/my_prog_test.log
? Hier sind meine Konfigurationen und Dateien.
/etc/rsyslog.conf
(der größte Teil der Datei ausgelassen):
if $programname == 'my_prog_test' then {
action(type="omfile" file="/var/log/my_prog_test.log")
}
Nachdem ich die Änderungen vorgenommen hatte, rsyslog.conf
habe ich Folgendes ausgeführt ...
$ sudo /etc/rc.d/init.d/rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
... also wurde rsyslog nach der Konfigurationsänderung neu gestartet.
Das Bash-Skript /home/nbsp/bin/my_prog_test
sieht folgendermaßen aus:
#!/bin/bash
logger 'Test message blah!'
Die Protokolldateiliste:
$ ls -la /var/log/ | grep my_prog_test
-rw-------. 1 root root 0 Jan 11 09:23 my_prog_test.log
Der symbolische Link...
$ ls -la /usr/bin/my_prog_test
lrwxrwxrwx. 1 root root 29 Jan 12 08:54 /usr/bin/my_prog_test -> /home/nbsp/bin/my_prog_test
Die Programmliste:
$ ls -la bin/my_prog_test
-rwxrwxr-x. 1 nbsp nbsp 50 Jan 12 09:09 bin/my_prog_test
Antwort1
Ihr Skript ruft logger(1) auf, um etwas in syslog zu schreiben. Daher sieht rsyslog, dass das Programm mit dem Namen „logger“ den Schreibvorgang ausführt und nicht „my_prog_test“.
Rufen Sie dazu logger(1) mit "-p local0.notice" auf und filtern Sie in rsyslog.conf nach der Einrichtung "local0" anstelle des Programmnamens "my_prog_test".
Laut der Dokumentation für rsyslog auf meinem System (Debian Wheezy mit rsyslog 7.4.4 von Backports) würde letzteres dann wie folgt ausgedrückt werden:
if $syslogfacility-text == 'local0' then {
action(type="omfile" file="/var/log/my_prog_test.log")
}
Das hier sollte auch funktionieren und wäre in diesem Fall einfacher:
local0.* /var/log/my_prog_test.log
Wenn auf Ihrem System die Syslog-Funktion local0 bereits für einen solchen Zweck verwendet wird, können Sie stattdessen local1 bis local7 verwenden.