2012-06-08 12 views
5

I probado con éxito el siguiente syslog "hola mundo" ejemplo en Ubuntu 12.04:C/C++ syslog al archivo personalizado (no/var/log/syslog pero/var/log/mylog) - Ubuntu 12.04

// gcc giuspexample.c -o giuspexample 

#include <syslog.h> 

int main() 
{ 
    setlogmask(LOG_UPTO (LOG_NOTICE)); 

    openlog("atm", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL0); 

    syslog(LOG_NOTICE, "Program started by User %d", getuid()); 
    syslog(LOG_INFO, "A tree falls in a forest"); 

    closelog(); 
    return 0; 
} 

y puedo leer la entrada en/var/log/syslog. he seguido las instrucciones sobre http://www.codealias.info/technotes/syslog_simple_example sobre cómo cambiar la ruta de archivo de destino

echo "local0.* /var/log/mylog" >> /etc/syslog.conf 

pero tratando de ejecutar

sudo /etc/init.d/syslog restart 

no funciona (command not found) y reiniciar el PC de todos modos no se inicia para escribir en/var/log/mylog pero aún en/var/log/syslog. ¿Alguien sabe qué pasa? Gracias.

Respuesta

8

En el directorio /etc/rsyslog.d, hay dos archivos:

  1. 20-ufw.conf
  2. 50-default.conf

añadí el archivo /etc/rsyslog.d/30-mycustomname.conf con sudo nano, con el siguiente contenido:

# Log QSD Centro generated log messages to file 
if $programname == 'centro' then /var/log/centro.log 
# Uncomment the following to stop logging anything that matches the last rule. 
& ~ 

Entonces compruebe que el archivo no existe /var/log/centro.log

sudo rm -f /var/log/centro.log 

Luego reinicie el servicio

sudo service rsyslog restart 

Por último funciona el siguiente código:

// gcc centro.c -o centro 

#include <stdio.h> 
#include <syslog.h> 

int main(int argc, char *argv[]) 
{ 
    openlog(NULL, 0, LOG_USER); 

    syslog(LOG_INFO, "MORTACCI TUA!!!"); 

    closelog(); 
    return 0; 
} 
Cuestiones relacionadas