Solución:
Importante: asegúrese de que el nombre del archivo de configuración sea log4j2.xml
(nota la 2
antes del período) en contraposición a log4j.xml
Supongo que no pasa nada porque no se registra nada con el nivel de error. Es posible que desee intentar agregar otro registrador como este:
<logger name="com.foo.Bar" level="trace">
<appender-ref ref="Console"/>
</logger>
Parece que la sección Configuración puede ser un buen recurso.
Para dar más detalles, está especificando un registrador con el nivel establecido en “error”:
<root level="error">
<appender-ref ref="Console"/>
</root>
Esto significa que solo los mensajes registrados usando Level.ERROR aparecerán en el registro. Agregar un registrador con un nivel menos restrictivo permitirá que aparezcan más mensajes en el registro. Recomiendo echar un vistazo a la sección Arquitectura del manual (si se desplaza hacia abajo en la página, verá la tabla que explica los niveles de registro). Alternativamente, puede simplemente cambiar el nivel del registrador raíz para rastrear (en lugar de agregar un nuevo registrador)
Dada la configuración que especificó, ejecutar el código a continuación produce algo como 13:27:50.244 [main] ERROR com.example.Log4j2Tester - testing ERROR level
package com.example;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Log4j2Tester {
private static final Logger LOG = LogManager.getLogger(Log4j2Tester.class);
public static void main(String[] args) {
LOG.error("testing ERROR level");
//if you change the level of root logger to 'trace'
//then you'll also see something like
// 13:27:50.244 [main] TRACE com.example.Log4j2Tester - exiting application
LOG.trace("exiting application");
}
}
SUGERENCIA: Para utilizar archivos log4j personalizados. (Más bien la cosa predeterminada “log4j2.xml”). Puede resultar útil tener varias configuraciones en algunos casos.
En caso de que alguien use maven y desee configurar log4j2, esto es lo que necesita en su pom.xml:
<systemProperties>
<property>
<name>/log4j.configuration</name>
<value>.../../Foo-log4j.xml</value>
</property>
</systemProperties>
De forma predeterminada, “log4j2.xml” es el nombre de archivo esperado. Pero, sin embargo, podemos anular eso configurando la propiedad del sistema log4j.configuration. En el ejemplo anterior, he usado un archivo de configuración personalizado como “Foo-log4j.xml”.
Puede hacer lo mismo a través de CLI:
-Dlog4j.configuration="Foo-log4j.xml"
Además de usar el archivo de configuración predeterminado, log4j2.xml (o log4j2-test.xml) en la carpeta raíz de la ruta de clase, puede usar esta propiedad del sistema para especificar la ruta del archivo de configuración (use la -D en la línea de comando de java)
log4j.configurationFile="xxxx/xxx/xxx"