4 votos

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

Estoy teniendo algunos problemas con <syslog.h> en 10.5. Estoy escribiendo un pequeño servidor basado en la horquilla 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 se utiliza la consola (estoy buscando en todos los mensajes y system.log ).

Aquí hay un fragmento de código de un C sencillo:

#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?

5voto

kunigami Puntos 201

A pesar de lo que pases a setlogmask() en su configuración por defecto, OS X sólo escribirá en el registro del sistema los mensajes que tengan una prioridad de LOG_NOTICE o superior.

Cualquiera de las siguientes opciones resolverá su problema...

  1. Habilitar el registro de menor prioridad en /etc/syslog.conf -- kern.* no es suficiente, 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 utilice la consola incorporada de Xcode - la salida siempre aparecerá allí independientemente de su syslog.conf ajustes

Esto es lo que parece en la consola integrada de Xcode 4:

Xcode console

Además, si estás desarrollando exclusivamente para OS X, puede que quieras mirar en ASL (Apple System Log) que debía sustituir a syslog() .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X