Los mensajes emitidos por syslog no aparecen en los registros del sistema

4

Estoy teniendo problemas con <syslog.h> en 10.5. Estoy escribiendo un pequeño servidor basado en fork para la clase y quiero usar syslog() para imprimir un montón de información de depuración. Sin embargo, no puedo encontrar ninguno de los mensajes que emito a través de syslog() mientras uso la Consola (estoy buscando en todos los mensajes & system.log ).

Aquí hay un fragmento de código de un plano 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;
}

Y no veo nada en "Todos los mensajes", "Mensajes de la consola" o system.log . ¿Algún consejo?

    
pregunta CyberSkull 05.05.2011 - 12:26

1 respuesta

5

A pesar de lo que se pasa a setlogmask() , en su configuración predeterminada, OS X solo escribirá mensajes en el registro del sistema que tengan una prioridad de LOG_NOTICE o superior.

Cualquiera de los siguientes resolverá su problema ...

  1. No es suficiente habilitar el registro de prioridad más baja en /etc/syslog.conf - kern.* , ya que los mensajes de registro de Xcode no provienen del núcleo
  2. Cambia la prioridad de tus mensajes de LOG_DEBUG a LOG_NOTICE
  3. Simplemente use la consola Xcode incorporada: la salida siempre aparecerá allí, independientemente de su configuración syslog.conf

Así es como se ve en la consola Xcode 4 incorporada:

Además,siestádesarrollandoexclusivamenteparaOSX,puedeconsultarASL (Registro del sistema Apple) , que fue destinado a reemplazar syslog() .

    
respondido por el Austin 06.05.2011 - 04:35

Lea otras preguntas en las etiquetas