¿Es posible que un controlador de registro predeterminado en labia a pasar varios niveles de registro?

StackOverflow https://stackoverflow.com/questions/891365

  •  23-08-2019
  •  | 
  •  

Pregunta

El GLogLevelFlags enum glib se define como:

typedef enum
{
  /* log flags */
  G_LOG_FLAG_RECURSION          = 1 << 0,
  G_LOG_FLAG_FATAL              = 1 << 1,

  /* GLib log levels */
  G_LOG_LEVEL_ERROR             = 1 << 2,       /* always fatal */
  G_LOG_LEVEL_CRITICAL          = 1 << 3,
  G_LOG_LEVEL_WARNING           = 1 << 4,
  G_LOG_LEVEL_MESSAGE           = 1 << 5,
  G_LOG_LEVEL_INFO              = 1 << 6,
  G_LOG_LEVEL_DEBUG             = 1 << 7,

  G_LOG_LEVEL_MASK              = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL)
} GLogLevelFlags;

Es posible que el controlador predeterminado para recibir, por ejemplo, (G_LOG_LEVEL_ERROR | G_LOG_LEVEL_DEBUG) como su nivel de registro? Se esta bien definido de acuerdo con la API de guarentees simplistas?

¿Fue útil?

Solución

Sí - que es. Viendo como G_LOG_LEVEL_MASK se define como una máscara de bit a bit con todos los bits pero 0 y 1 conjunto, y

  g_log_set_handler ("GLib", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL
                 | G_LOG_FLAG_RECURSION, my_log_handler, NULL);

se utiliza como un ejemplo para la adición de un manejador de registros para todos los mensajes de GLib, la combinación de los niveles de registro está muy bien.

Además, considere la siguiente cita para g_log_set_handler:

  

Establece el manejador de registros para un dominio y un conjunto de niveles de registro

Por último, ver este tutorial, que, entre otras cosas, estados:

  

El parámetro GLogLevelFlags es una enumeración de los indicadores de bits que definen el carácter y el canal específico de un registro de mensajes. Los tres que vamos a usar más probable con los manipuladores de registro está G_LOG_LEVEL_MESSAGE, G_LOG_LEVEL_WARNING y G_LOG_LEVEL_ERROR. Puesto que son indicadores de bits, puede utilizar un binario operador OR para combinar más de un canal en un único controlador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top