Esto se considera una buena práctica. Por ejemplo, si hay alguna concatenación de cadenas, no se evalúa y se comprueba en log4j, pero se verifica primero.
Ejemplo:
if (log.isDebugEnabled()) {
log.debug("N=" + N + ", a=" + Arrays.toString(a));
}
método Arrays.toString()
y también concatenación no se realiza si depuración no está habilitado. Si no hay if
se invoca primero y se verifica más tarde, eso es todo ;-)
Mi opinión es que cuando hay una cadena simple como en su ejemplo, si no es necesario el registro, si hay algo más complicado (incluso más complicado que en mi ejemplo) esto puede ahorrar algo de tiempo de CPU en modo de producción (sin modo de depuración habilitado).
Tiene que darse cuenta también que cuando en el caso de concatenación hay String.valuOf()
llamada que (para objetos no nulos) llama toString()
método, que puede ser realmente un problema de rendimiento para los objetos de datos grandes (frijoles con muchas propiedades) si se considera que no invoca ninguna lógica comercial (por lo tanto, es "inútil").
+1 para SLF4J. No muchos estresan una característica tan genial. – adarshr
por otro lado, podemos analizar qué tiene un mejor rendimiento: un 'if' (+1 captador) o varias llamadas a métodos para determinar si la depuración está habilitada o deshabilitada ... – Betlista