Estoy usando Log4J en mi aplicación para el registro. Anteriormente yo estaba usando la llamada de depuración como:En log4j, ¿la comprobación es DebugEnabled antes de iniciar sesión mejora el rendimiento?
Opción 1:
logger.debug("some debug text");
pero algunos enlaces sugieren que es mejor para comprobar isDebugEnabled()
principio, como:
Opción 2:
boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
logger.debug("some debug text");
}
Así que mi pregunta es "¿La opción 2 mejora el rendimiento de alguna manera?".
Debido a que en cualquier caso marco Log4J tienen el mismo cheque por debugEnabled. Para la opción 2 podría ser beneficioso si estamos utilizando instrucciones de depuración múltiple en un solo método o clase, en el que el marco no necesita llamar isDebugEnabled()
método múltiple veces (en cada llamada); en este caso se llama isDebugEnabled()
método sólo una vez, y si Log4J está configurado para el nivel de depuración luego en realidad se llama isDebugEnabled()
método dos veces:
- en caso de asignar un valor a la variable debugEnabled y
- En realidad llamado por el método logger.debug()
No creo que si escribimos múltiples logger.debug()
comunicado en el método o la clase y llamar debug()
método de acuerdo con la opción 1, entonces es por encima de marco Log4J en comparación con la opción 2. Desde isDebugEnabled()
es un método muy pequeña (en términos de código), podría ser un buen candidato para la alineación.
log5j extiende log4j casi de la misma manera que slf4j –
Este es también el enfoque de java.util.Logging. – Paul
@erickson ¿Cuál es el beneficio del formateador? – Geek