2012-04-29 4 views
9

Ho un'applicazione myapp che dovrebbe inviare file di registro solo a /var/log/myapp.log. myapp è scritto in C++. Il seguente codice di esempio, invia i log solo a/var/log/syslog. Il mio sistema operativo è Linux - Ubuntu 12.04 - per essere specifico. Ho anche scoperto che la mia macchina ha rsyslog di syslog installato.Come configurare syslog in modo che un registro applicazioni vada a un file specifico

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

int main(void) { 
    openlog("myapp", LOG_PID|LOG_CONS, LOG_USER); 
    syslog(LOG_INFO, "abc 10"); 
    closelog(); 
    return 0; 
} 

risposta

4

Secondo lo syslog (3) manpage, il primo parametro per openlog() definisce un prefisso per i messaggi di log, non è un nome di file. È possibile utilizzare una funzione come LOG_LOCAL0 per contrassegnare l'output e quindi configure syslogd using /etc/syslog.conf per inviare tali registri al file desiderato.

+1

Come configurare syslog.conf in modo che i messaggi di registro dalla mia applicazione vadano a un file specifico? Scrivere su un file semplice non è una buona soluzione - leggi questo link http://stackoverflow.com/questions/158457/logging-in-linux e la risposta fornita da http://stackoverflow.com/users/7740/richard – suresh

+0

@suresh È possibile fornire direttamente il collegamento a una risposta copiando la posizione del collegamento dal link "Condividi" dopo ogni risposta. In questo modo: http://stackoverflow.com/a/158493/598175 – deppfx

Problemi correlati