Centos syslog no inicia sesión en un archivo personalizado desde el script bash

Centos syslog no inicia sesión en un archivo personalizado desde el script bash

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/messagesasí:

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.confejecuté...

$ 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_testse 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.

información relacionada