2008-10-09 20 views
46

Los niveles de registro WARN, ERROR y FATAL son bastante claros. Pero cuando es algo DEBUG, y cuando INFO?¿Cómo determinar qué nivel de registro usar?

He visto algunos proyectos que son molestamente prolijo en el nivel INFO, pero también he visto código que favorece demasiado el nivel de DEPURACIÓN. En ambos casos, la información útil está oculta en el ruido.

¿Cuáles son los criterios para determinar los niveles de registro?

Respuesta

89

No creo que haya reglas rígidas; utilizando los niveles de tipo log4j, mis 'reglas de oro' son algo como:

  • FATAL: la aplicación (o al menos un hilo) está a punto de morir terriblemente. Aquí es donde va la información que explica por qué va.
  • ERROR: algo que la aplicación está haciendo que no debería. Este no es un error de usuario ('consulta de búsqueda no válida'); es una falla de aserción, problema de red, etc., probablemente una que va a abortar la operación actual
  • WARN: algo que es preocupante pero que no hace abortar la operación; # de conexiones en el conjunto de bases de datos que se está agotando, un tiempo de espera inusual pero esperado en una operación, etc. A menudo pienso en 'WARN' como algo que es útil en conjunto; p.ej.grep, group, y cuéntelos para obtener una imagen de lo que está afectando el estado del sistema
  • INFO: registro normal que es parte del funcionamiento normal de la aplicación; diagnóstico para que pueda volver atrás y decir '¿con qué frecuencia se realizó esta operación de amplio nivel?', o '¿cómo llegaron los datos del usuario a este estado?'
  • DEPURTO: Desactivado de forma predeterminada, puede activarse para la depuración de problemas inesperados específicos. Aquí es donde puede registrar información detallada sobre los parámetros del método clave u otra información que sea útil para encontrar problemas probables en áreas específicas del código "problemáticas".
  • TRACE: "En serio, WTF está pasando aquí que necesito para registrar todos los sola declaración ejecuto encontrar este @ # $ @ ing error de corrupción de memoria antes de volverme loco?!?!"

No está escrito en piedra, pero es una idea aproximada de cómo lo pienso.

5

Piensa en quién necesita usar cada nivel. En mi código guardo DEPURTO reservado para una salida de desarrollador, p. salida que solo ayudaría a un desarrollador. VERBOSE se utiliza para un usuario normal cuando se necesita mucha información. INFORMACIÓN Normalmente uso para mostrar eventos importantes (por ejemplo, enviar una página web, verificar algo importante).

Y FAIL y WARN son bastante auto explicativas.

+0

Creo que mucho de INFO o WARN solo ayudaría a los desarrolladores – Casebash

7

De manera informal que utilizan este tipo de jerarquía,

  • DEBUG - rastro valores reales
  • INFO - Algo que acaba de ocurrir - nada importante, sólo una bandera
  • WARN - trabajo del todo, pero algo ISN' t bastante lo que se esperaba
  • ERROR - algo ha sucedido que tendrá que ser reparado, pero podemos continuar y hacer otras actividades (independientes)
  • FATAL - un probl lo suficientemente grave em que ni siquiera debemos continuar

liberaré general con INFO está registrando, pero sólo si sé que los archivos de registro se revisaron en realidad (y el tamaño no es un problema), de lo contrario es WARN.

3

La convención en mi equipo es utilizar debug si algo se calcula en el mensaje, mientras que info se usa para texto sin formato. Entonces, en efecto, info le mostrará lo que está sucediendo y debug mostrará los valores de las cosas que están sucediendo.

1

Tiendo a orientar INFO hacia el usuario para darles mensajes que ni siquiera son advertencias. DEPURAR tiende a ser para el uso del desarrollador, donde me sale mensajes para ayudar a rastrear el flujo a través del código (con los valores de las variables también).

También me gusta otro nivel de DEPURACIÓN (DEBUG2?) Que proporciona cargas absolutas de información de depuración, como volcados hexadecimales de todos los almacenamientos intermedios, etc.

0

No hay necesidad de un nivel DEBUG2. Para eso está 'TRACE'. TRACE está destinado a ser el nivel más bajo absoluto de registro que da salida a cada información posible que pueda querer ver.

Para evitar un aluvión de información, generalmente no se recomienda habilitar el registro de nivel de rastreo en todo un proyecto. En su lugar, use 'DEPURAR' para encontrar información general sobre el error y dónde ocurre (de ahí el nombre), y luego habilite RASTREAR solo para ese componente si todavía no puede resolverlo.

Cuestiones relacionadas