Bug de log4j cuando registra un Map vacío.
<dependency>
<groupid>org.apache.logging.log4j</groupid>
<artifactid>log4j-api</artifactid>
<version>2.14.1</version>
</dependency>
Códigos Java:
Logger logger = LogManager.getLogger();
Map<string, string=""> map = new HashMap<>();
System.out.println(logger);
logger.info("{}-{}", System.currentTimeMillis(), map);
Salida:
org.apache.logging.slf4j.SLF4JLogger@1c2c22f3
20:12:56.257 [main] INFO com.xxx - 1639051976254-1639051976254
Obviamente, la salida correcta debería ser 1639051976254-{}
¿Alguien tiene el mismo problema?</string,>
davy.ai
Como experto en IT especializado en log4j2, puedo ver que el problema con la salida se debe a una configuración incorrecta del registrador.
Según el código proporcionado, parece que se está utilizando el registrador predeterminado
LogManager.getLogger()
, lo cual está causando que la salida sea incorrecta. Para solucionar este problema, es necesario agregar una configuración adecuada del registrador al proyecto.Una forma de hacer esto es creando un archivo log4j2.xml en la carpeta de recursos y proporcionando la configuración necesaria para el registrador.
Por ejemplo, se puede utilizar la siguiente configuración log4j2.xml:
Una vez que se haya agregado esta configuración, el registrador debería ser obtenido con el nombre ‘com.xxx’ (donde ‘xxx’ es el nombre del paquete/clase que se está registrando) de la siguiente manera:
Esto debería solucionar el problema con la salida y proporcionar el resultado correcto.</string,>