I messaggi emessi da syslog non vengono visualizzati nei log di sistema

4

Ho qualche problema con <syslog.h> in 10.5. Sto scrivendo un piccolo server basato su fork per la classe e voglio usare syslog() per stampare una serie di informazioni di debug. Tuttavia, non riesco a trovare nessuno dei messaggi che emetto tramite syslog() mentre utilizzo Console (sto cercando in entrambi i messaggi e system.log ).

Ecco uno snippet di codice di un semplice C:

#include <syslog.h>
#include <stdarg.h>

int main (int argc, const char * argv[])
{
    openlog("Syslog Test", LOG_PID | LOG_NDELAY | LOG_CONS | LOG_PERROR, LOG_USER);
    setlogmask(LOG_UPTO(LOG_DEBUG));
    syslog(LOG_DEBUG, "%s", "Hello, World!");
    syslog(LOG_DEBUG, "%s", "And goodbye!");
    closelog();
    return 0;
}

E non vedo nulla in "Tutti i messaggi", "Messaggi della console" o system.log . Qualche consiglio?

    
posta CyberSkull 05.05.2011 - 12:26
fonte

1 risposta

5

Nonostante ciò che passi a setlogmask() , nella sua configurazione predefinita, OS X scriverà solo messaggi nel registro di sistema che hanno una priorità di LOG_NOTICE o superiore.

Qualsiasi delle seguenti soluzioni risolverà il tuo problema ...

  1. Abilita la registrazione con priorità più bassa in /etc/syslog.conf - kern.* non è sufficiente, poiché i messaggi di log da Xcode non provengono dal kernel
  2. Modifica la priorità dei tuoi messaggi da LOG_DEBUG a LOG_NOTICE
  3. Utilizza semplicemente la console Xcode integrata: l'output verrà sempre visualizzato indipendentemente dalle impostazioni syslog.conf

Ecco come appare nella console Xcode 4 integrata:

Inoltre,sestaisviluppandoesclusivamenteperOSX,potrestivoleresaminareASL (Apple System Log) , che intendeva sostituire syslog() .

    
risposta data 06.05.2011 - 04:35
fonte

Leggi altre domande sui tag