Diferencia entre logger.info y logger.debug

83

¿Cuál es la diferencia entre logger.debugy logger.info?

¿Cuándo se logger.debugimprimirá?

Senthilnathan
fuente

Respuestas:

30

Esto dependerá de la configuración de registro. El valor predeterminado dependerá del marco que se utilice. La idea es que más adelante, al cambiar un ajuste de configuración de INFO a DEBUG, verá una tonelada de más (o menos, si es al revés) líneas impresas sin volver a compilar toda la aplicación.

Si piensa cuál usar, entonces se reduce a pensar qué quiere ver en qué nivel. Para otros niveles, por ejemplo, en Log4J, mire la API, http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html

toomasr
fuente
121

Le sugiero que consulte el artículo llamado "Breve introducción a log4j". . Contiene una breve explicación de los niveles de registro y demuestra cómo se pueden utilizar en la práctica. La idea básica de los niveles de registro es que desea poder configurar la cantidad de detalles que contienen los registros según la situación. Por ejemplo, si está intentando solucionar un problema, querrá que los registros sean muy detallados. En producción, es posible que solo desee ver advertencias y errores.

El nivel de registro para cada componente de su sistema generalmente se controla a través de un parámetro en un archivo de configuración, por lo que es fácil de cambiar. Su código contendría varias declaraciones de registro con diferentes niveles. Al responder a un Exception, puede llamar Logger.error. Si desea imprimir el valor de una variable en cualquier punto dado, puede llamar Logger.debug. Esta combinación de un nivel de registro configurable y declaraciones de registro dentro de su programa le permite un control total sobre cómo su aplicación registrará su actividad.

En el caso de log4j al menos, el orden de los niveles de registro es:

DEBUG < INFO < WARN < ERROR < FATAL

Aquí hay un breve ejemplo de ese artículo que demuestra cómo funcionan los niveles de registro.

   // get a logger instance named "com.foo"
   Logger logger = Logger.getLogger("com.foo");

   // Now set its level. Normally you do not need to set the
   // level of a logger programmatically. This is usually done
   // in configuration files.
   logger.setLevel(Level.INFO);

   Logger barlogger = Logger.getLogger("com.foo.Bar");

   // This request is enabled, because WARN >= INFO.
   logger.warn("Low fuel level.");

   // This request is disabled, because DEBUG < INFO.
   logger.debug("Starting search for nearest gas station.");

   // The logger instance barlogger, named "com.foo.Bar",
   // will inherit its level from the logger named
   // "com.foo" Thus, the following request is enabled
   // because INFO >= INFO.
   barlogger.info("Located nearest gas station.");

   // This request is disabled, because DEBUG < INFO.
   barlogger.debug("Exiting gas station search");
William Brendel
fuente
@momomo, es posible que desee verificar esta respuesta para saber qué Tracenivel de registro es.
RBT
Tu ejemplo If you want to print the value of a variable at any given point, you might call Logger.debugme ayudó a aclarar la confusión que tenía entre Debugy Tracenivel. ¡Gracias!
RBT
13

Solo una aclaración sobre el conjunto de todos los niveles posibles, que son:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
usuario1823890
fuente
9

Básicamente, depende de cómo estén configurados sus registradores. Por lo general, tendría la salida de depuración escrita durante el desarrollo pero desactivada en producción, o posiblemente haya seleccionado categorías de depuración escritas mientras depura un área en particular.

El punto de tener diferentes prioridades es permitirle subir / bajar el nivel de detalle en un componente en particular de una manera razonablemente detallada, y solo necesita cambiar la configuración de registro (en lugar del código) para ver la diferencia.

Jon Skeet
fuente
2

Esta es una pregunta muy antigua, pero no veo mi comprensión aquí, así que agregaré mis 2 centavos:

Cada nivel corresponde / mapea a un tipo de usuario:

  • debug: desarrollador - depuración manual
  • trace: registro automatizado y trazador de pasos - para soporte de tercer nivel
  • información: técnico / nivel de soporte 1/2
  • advertir: error de técnico / usuario: alerta automatizada / nivel de soporte 1
  • crítico / fatal: depende de su configuración - TI local
Mickey Perlstein
fuente
2
  1. INFO se utiliza para registrar la información que su programa está funcionando como se esperaba.
  2. DEBUG se utiliza para encontrar el motivo en caso de que su programa no funcione como se esperaba o se haya producido una excepción. es de interés para el desarrollador.
Santosh Srivastava
fuente
0

¿Cuál es la diferencia entre logger.debug y logger.info?

Estos son solo algunos niveles predeterminados ya definidos. Puede definir sus propios niveles si lo desea. El propósito de esos niveles es habilitar / deshabilitar uno o más de ellos, sin realizar ningún cambio en su código.

¿Cuándo se imprimirá logger.debug?

Cuando haya habilitado la depuración o cualquier nivel superior en su configuración.

artesano
fuente
0

Depende del nivel que haya seleccionado en su archivo de configuración log4j.

<Loggers>
        <Root level="info">
        ...

Si su nivel es "info" (por defecto), logger.debug(...)no se imprimirá en su consola. Sin embargo, si su nivel es "depuración", lo hará.

Dependiendo del nivel de criticidad de su código, debe usar el nivel más preciso entre los siguientes:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
Jack'
fuente