2011-05-15 13 views
6

Me han influido los niveles de registro que mis equipos y yo hemos utilizado en mis dos últimas compañías. Compartiré el nuestro aquí, pero tenga en cuenta que este bit es subjetivo:¿Existe una guía casi consensuada para los niveles de registro?

  • Fatal - Su aplicación se está desactivando.
  • Error - Esta operación o hilo está fallando y ardor. La aplicación puede continuar.
  • Advertir - La operación actual puede ser capaz de continuar, pero un ingeniero tiene que investigar algo.
  • Info - Explicar lo que su funcionamiento está haciendo.
  • Depuración - Explicación de las operaciones que se pueden obtener (bucles internos, etc.) bastante spam.

Ahora, mi pregunta objetiva es si hay un estilo altamente acordado sobre este tema. La respuesta puede ser no. Pero si existe tal estándar, ¿puedes señalarle una URL?

También tenga en cuenta que realmente no me importa qué umbral está realmente configurado para iniciar sesión en algún lugar útil en un entorno implementado/producción. Por el contrario, mi pregunta está restringida a las pautas que aquellos de nosotros que escribimos código deberíamos utilizar.

Estoy poniendo una etiqueta y la etiqueta C# Java en mi pregunta. Es posible que tengamos diferentes pautas en estos dos campos, pero probablemente haya razones culturales por las que diferiríamos, no razones conceptuales.

+0

Gracias a quien añadido la etiqueta de registro, buena idea. –

+0

También hay RASTREO que podría venir antes de depurar :) Ahí es donde se produce cada pequeña cosa. Haría eso más spam y depurarlo menos. –

+0

@Chris - Pero log4net no incluye métodos de conveniencia para ese nivel, ¡no podría usarlo! lol –

Respuesta

3

Ni siquiera estoy seguro de que si algo está "muy de acuerdo" puede ser respondido objetivamente.

Las bibliotecas Log4j y Log4Net ciertamente emplean las definiciones de nivel que usted ha descrito. Ver this link.

Es posible que alguien haya producido un contraejemplo de una biblioteca que usa un conjunto de niveles de registro definidos de forma diferente.

+0

Este enlace es útil. –

+0

Marqué esto como la respuesta porque creo que el enlace a la página de niveles es lo más parecido a un estándar que se ha publicado. Aclamaciones. –

3

de SSCLI (fuentes .NET):

namespace System { 
    ... 
    [Serializable] 
    internal enum LogLevel { 
     Trace = 0, 
     Status = 20, 
     Warning= 40, 
     Error = 50, 
     Panic = 100, 
    } 
    ... 
} 

anote los valores de advertencia []) que se basan en esta variante de distribución. de todos modos es Microsoft)

1

No hay ningún estándar, estilo o consejo "altamente acordado" del que sea consciente. Pero cada uno de los subsistemas de registro principales para Java tiene un conjunto de niveles que corresponden a los 5 que ha identificado. De hecho, los niveles están lo suficientemente alineados en la práctica que es posible "unificar" el registro utilizando la fachada SLF4J. (Supongo que se podría decir que esto hace que el SLF4J levels un estilo de facto preferido para Java.)

Yo añadiría un par de advertencias:

  • consejos acerca de que un ingeniero puede y debe hacer en respuesta a un evento de registro está fuera del alcance al describir lo que significan los eventos de registro.

  • Las categorías son necesariamente subjetivas, pero usar un lenguaje como "crash and burn" va a generar malentendidos.

  • En la práctica, el uso puede no ser consistente con el estilo defacto; p.ej.algunos sistemas de registro le permiten usar otros niveles (no manifiestos), y los desarrolladores pueden registrar eventos en el nivel "incorrecto".


Tenga en cuenta que SLF4J 1.4 añade soporte para un nivel de seguimiento.

Pensamiento
0

yo añadiría los niveles de la función de registro de Python:

DEBUG - La información detallada, por lo general de interés sólo en el diagnóstico de problemas.

INFORMACIÓN - Confirmación de que las cosas funcionan como se esperaba.

ADVERTENCIA: una indicación de que algo inesperado sucedió, o indicativo de algún problema en el futuro cercano (por ejemplo, 'espacio en disco bajo'). El software sigue funcionando como se esperaba.

ERROR - Debido a un problema más grave, el software no ha podido realizar algunas funciones.

CRÍTICO: un error grave que indica que el programa en sí no puede continuar ejecutándose.

Estos se pueden encontrar aquí: http://docs.python.org/howto/logging.html#logging-basic-tutorial

Cuestiones relacionadas