2012-06-25 23 views
5

Mi pregunta proviene de la pregunta this, donde uno de los comentarios sugiere que un nivel de registro DEBUG es más fino que TRACE. Al ver lo que significa TRACE y DEBUG en .NET, parece tener sentido, ya que, por definición, DEBUG (como concepto) nunca se ve en la producción. Esta es probablemente la razón por la cual no se usan como un tipo de evento en la biblioteca de Enterprise. Por otro lado, todas las demás implementaciones que conozco (log4net, nlog, common.logging) tienen TRACE como un nivel más fino que DEBUG. Es decir, una aplicación que se ejecuta en el nivel de registro DEBUG no escribiría los registros de TRACE.Niveles de registro: ¿Consideraría DEBUG más fino que TRACE?

Tenemos que implementar nuestro propio marco de registro y me preguntaba si hay más personas que piensan que DEBUG realmente debería ser el nivel de registro más "fraudulento". ¿O consideraría esto un error si nuestro nuevo marco proporcionara una familiaridad fácil de usar para los nuevos desarrolladores, etc.?

Gracias.

Respuesta

4

Ten en cuenta que log4net proviene del mundo de Java y NLog toma muchas de sus ideas de log4net, por lo que Trace y Debug serán diferentes para esos marcos ya que no se basan en la visión del mundo del diseñador de .NET framework que está en el espacio de nombres System.Diagnostics.

Sugeriría que Trace en .NET es sinónimo de Debug en el mundo .NET, ya que habilita el rastreo (a través de la directiva del compilador TRACE o en el web.config) para mostrar la información de depuración.

Obviamente en NLog y Log4Net la gravedad de la información puede interpretarse como ligeramente diferente, pero ambos terminarían siendo utilizados para rastrear un error, en lugar de un error del sistema, por lo que tienen esencialmente el mismo significado.

+0

Entonces, si tuviera que implementar su propio marco de trabajo de registro, solo tendría un nivel (como Verbose) en Entlib)? – Werner

+0

@Werner sí definitivamente! Información, error, advertencia al igual que .NET. Los niveles extra basados ​​en Java tienen sentido para los sistemas de transacciones críticas de negocios o de seguridad, pero para la mayoría de las personas las necesidades son excesivas. –

4

Estoy de acuerdo con que TRACE es más fino que DEBUG.

Ejemplo: Si usara PostSharp añadir declaraciones de registro automático a cada llamada a un método en mi solicitud, me gustaría que este código para ser inyectado en el comienzo de cada método:

if (Log.IsTraceEnabled) 
    Log.TraceFromat("Method {0} args {1}", method, string.Join(",", args)); 

Es decir, interpretar el nivel "TRACE" como me ayudó a rastrear llamadas a través de la aplicación, mientras que DEBUG está escribiendo información que ayuda a los desarrolladores a depurar el comportamiento del programa . No sé si eso tiene sentido?

+0

Sí, tiene sentido. De hecho, la mayoría de los desarrolladores aquí ven el mundo así. Pero eso podría ser una coincidencia, y no queremos dar con algo que sería incomprendido por 8 de 10 desarrolladores :) – Werner

Cuestiones relacionadas