2012-06-08 13 views
5

ho testato con successo il seguente syslog "ciao mondo" esempio su Ubuntu 12.04:C/C++ syslog al file personalizzato (non/var/log/syslog ma/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; 
} 

e posso leggere la voce in/var/log/syslog. Ho seguito le istruzioni su http://www.codealias.info/technotes/syslog_simple_example su come modificare il percorso del file di destinazione

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

ma il tentativo di eseguire

sudo /etc/init.d/syslog restart 

non funziona (comando non trovato) e il riavvio del PC in ogni caso non si avvia scrivere su/var/log/mylog ma ancora su/var/log/syslog. Qualcuno sa cosa c'è che non va? Grazie.

risposta

8

Nella directory /etc/rsyslog.d, ci sono due file:

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

ho aggiunto il file /etc/rsyslog.d/30-mycustomname.conf con sudo nano, con il seguente contenuto:

# 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. 
& ~ 

Poi controllare che il file /var/log/centro.log non esiste

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

Poi riavviare il servizio

sudo service rsyslog restart 

Infine il seguente codice funziona:

// 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; 
}