
Estoy intentando obtener un script bash para iniciar sesión en un archivo de registro personalizado usando syslog en Centos versión 6.5, pero siempre se registra /var/log/messages
así:
Jan 12 09:54:47 localhost nbsp: Test message blah!
¿Qué estoy haciendo mal? ¿Por qué no inicia sesión /var/log/my_prog_test.log
? Aquí están mis configuraciones y archivos.
/etc/rsyslog.conf
(la mayor parte del archivo omitido):
if $programname == 'my_prog_test' then {
action(type="omfile" file="/var/log/my_prog_test.log")
}
Después de hacer los cambios rsyslog.conf
ejecuté...
$ sudo /etc/rc.d/init.d/rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
... entonces rsyslog se reinició después del cambio de configuración.
El script bash /home/nbsp/bin/my_prog_test
se ve así:
#!/bin/bash
logger 'Test message blah!'
El listado del archivo de registro:
$ ls -la /var/log/ | grep my_prog_test
-rw-------. 1 root root 0 Jan 11 09:23 my_prog_test.log
El enlace simbólico...
$ 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
El listado del programa:
$ ls -la bin/my_prog_test
-rwxrwxr-x. 1 nbsp nbsp 50 Jan 12 09:09 bin/my_prog_test
Respuesta1
Su script llama a logger(1) para escribir algo en syslog. Por lo tanto, rsyslog verá el nombre del programa "logger" realizando la escritura y no "my_prog_test".
Para lo que desea lograr, llame al registrador (1) con "-p local0.notice" y en rsyslog.conf filtre por la función "local0" en lugar del nombre del programa "my_prog_test".
Según la documentación de rsyslog en mi sistema (Debian Wheezy con rsyslog 7.4.4 desde backports), este último se expresaría como:
if $syslogfacility-text == 'local0' then {
action(type="omfile" file="/var/log/my_prog_test.log")
}
Esto también debería funcionar y sería más sencillo para este caso:
local0.* /var/log/my_prog_test.log
Si en su sistema la función syslog local0 ya se utiliza para tal propósito, puede usar local1 hasta local7.