Una alteración de la primera forma es la mejor
log.info("error={}", errmsg);
Como otros han dicho, el segundo ejemplo tiene que ser un error, ya que no hay un token de formato para insertar errmsg
en "error = "
, a menos que errmsg
esté Throwable
y info
, el registro de nivel está habilitado, y luego el registrador imprimirá una traza suave.
Durante muchos años he preferido la concatenación de cadenas, la tercera forma. Me resulta más fácil leer meses o años más tarde cuando vuelvo a leer el código.
Sin embargo, como Tomasz Nurkiewicz responde, la primera forma LOG.info("error={}", errmsg);
es la mejor. La razón, sin embargo, no es que String.format()
sea más rápido que la concatenación de cadenas. No lo es Ver Is it better practice to use String.format over string Concatenation in Java?.
La razón por la primera forma se comporta mejor es que si el registro info
nivel está desactivado, entonces el marco de registro no tiene que llamar errmsg.toString()
y que no tiene que ejecutar String.format()
en absoluto. El único caso en el que errmsg.toString()
no tiene costo de rendimiento es si errmsg
es String
.
También sugeriría que no haya espacios en blanco alrededor del =
, ya que muchos agregadores de registros como Splunk indexarán automáticamente error=errmsg
en un par de campos y valores.Además, si esto realmente es un error, entonces lo escribiría en el nivel error()
, no en info()
. Y lo más probable es que haya una excepción Throwable
en algún lugar antes de este código que debe entrar en el parámetro Throwable
.
Y, logger
, aunque probablemente se declare como final
, es un objeto mutable, por lo que debe estar en minúscula. Ver Should a "static final Logger" be declared in UPPER-CASE?.
lo que significa que la respuesta debería ser
log.info("error={}", errMsg, exception);
supongo que la segunda se utiliza para excepciones, ¿verdad? p.ej. LOG.info ("Error al leer el archivo", e); – m0therway
@Pregnantmom: ¡tienes toda la razón! El 'errmsg' me hizo creer que esto no es una excepción. Corregí mi respuesta. –
Personalmente prefiero la tercera concatenación de cadenas. En cuanto al rendimiento, la concatenación de cadenas puede ser más rápida: http://stackoverflow.com/questions/925423/is-it-better-practice-to-use-string-format-over-string-concatenation-in-java – Kirby