Pregunta ¿Cuál es el significado y el propósito de una biblioteca de registro? [cerrado]


Quiero entender los conceptos básicos de una biblioteca de registro.

  1. ¿Cuál es exactamente el propósito de una biblioteca de registro? Entiendo que un registro es básicamente información sobre su proceso de solicitud durante la ejecución. Una forma de hacerlo es escribiendo información en un archivo directamente.
  2. ¿Cuál es el propósito de diseñar una biblioteca dedicada tal como glog para fines de registro? ¿Mi comprensión del registro es correcta o necesito cambiarla? ¿Alguien puede dar un ejemplo práctico para exhibir la importancia de usar una biblioteca de registro?
  3. ¿Qué características debería tener en cuenta al elegir una biblioteca de registro?
  4. ¿Cómo se puede utilizar efectivamente el registro durante las implementaciones?

9
2017-08-18 16:19


origen


Respuestas:


La información de inicio de sesión durante la ejecución de su aplicación puede ayudarlo a comprender qué causó un error o un bloqueo, proporcionándole más contexto de lo que puede obtener simplemente un informe de un bloqueo, una pila de llamadas o incluso un minivolcado. Esto es particularmente importante cuando recibe informes de errores o bloqueos de personas que no son desarrolladores y que no se están ejecutando bajo un depurador, ya sean usuarios finales / clientes o no desarrolladores en su equipo.

Mi experiencia es en juegos y el registro puede ser particularmente valioso con los juegos por algunas razones. Una es que muchos problemas pueden relacionarse con las características específicas del hardware en un sistema, por lo que la información de inicio de sesión como qué tipo de GPU tiene el usuario, qué versión de controlador de gráficos están ejecutando, etc. puede ser esencial para solucionar problemas que solo aparecen en un configuración específica. Otra es que los juegos tienen un aspecto de simulación donde el estado del juego evoluciona a lo largo del tiempo en respuesta a la entrada del usuario combinada con la simulación de cosas como la física, la IA y las reglas del juego. Comprender lo que estaba sucediendo en el período previo a una falla o error ayuda a descubrir cómo reproducirlo y puede brindar pistas valiosas sobre la causa raíz del problema.

Una biblioteca de registro agrega funcionalidad que es útil para el registro y va más allá de lo que está disponible desde un simple printf. Esto incluye cosas como:

  • La capacidad de controlar la cantidad de registros se basa en factores como la depuración frente a las compilaciones de lanzamiento y la configuración del tiempo de ejecución, como un indicador de -verbose.
  • El concepto de 'canales' que se puede habilitar de forma independiente, deshabilitar o configurar en una verbosidad particular. Por ejemplo, para depurar un problema de gráficos, es posible que desee que el canal de "gráficos" se configure con la máxima sintaxis al silenciar los canales de "red" y "audio".
  • Un back-end flexible que abarca desde el registro a un archivo local en disco hasta el inicio de sesión en una base de datos remota a través de una red.
  • Seguridad de subprocesos para que el registro se comporte por sí mismo cuando potencialmente inicie sesión simultáneamente desde múltiples subprocesos diferentes.
  • Etiquetado automático de entradas de registro con una marca de tiempo y cualquier otra información relevante (canal, nivel de detalle, etc.).

En cuanto a cómo hacer uso de una biblioteca de registro, que es algo dependiente de su aplicación, pero aquí hay algunas sugerencias generales:

  • Haga un buen uso de los niveles de canales y verbosidad si su biblioteca de registro los proporciona (y debería). Esto lo ayudará a administrar lo que puede convertirse en un gran volumen de mensajes de registro a medida que crece su aplicación.
  • Si se encuentra con una condición inesperada pero no fatal y la maneja, registre información sobre ella en caso de que conduzca a problemas imprevistos más adelante.
  • Al iniciar la aplicación, registre cualquier información que pueda ser útil para reproducir errores poco frecuentes más adelante si recibe un informe de fallo o fallo de un cliente. Err en el lado de demasiada información, nunca se sabe lo que podría ser útil de antemano. Esto podría incluir cosas como el tipo de CPU, el modelo de GPU y la versión del controlador, la memoria disponible, la versión del sistema operativo, el espacio disponible en el disco duro, etc.
  • Registre las transiciones de estado de la clave para que pueda rastrear en qué estado se encontraba su aplicación y cómo llegó allí cuando está depurando un problema.

12
2017-08-18 16:53



Muchos programas usan algún tipo de registro, y no tiene sentido reinventar la rueda cada vez, incluso si el código es relativamente simple.

Otras bibliotecas también pueden usar la biblioteca de registro, así que en lugar de tener que configurar los archivos de registro para cada biblioteca que incluyas en un proyecto, puedes simplemente configurar la única biblioteca de registro. Esto también significa que cualquier error que pueda aparecer en el código de registro se puede solucionar simplemente reemplazando la biblioteca en lugar de tener que reemplazar múltiples bibliotecas.

Finalmente, hace que el código sea más fácil de leer para otros desarrolladores porque no tienen que descubrir cómo implementó su registro personalizado.


2
2017-08-18 16:56