Últimamente decidí aprender a usar el registrador log4j2. Descargué los archivos jar requeridos, creé la biblioteca, el archivo de configuración xml e intenté usarlo. Desafortunadamente, obtengo esta declaración en la consola (Eclipse):
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Este es mi código de clase de prueba:
package log4j.test;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Log4jTest
{
static final Logger logger = LogManager.getLogger(Logger.class.getName());
public static void main(String[] args) {
logger.trace("trace");
logger.debug("debug");
logger.info("info");
logger.warn("warn");
logger.error("error");
logger.fatal("fatal");
}
}
Y mi archivo de configuración xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration package="log4j.test"
status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="log4j.test.Log4jTest" level="trace">
<AppenderRef ref="Console"/>
</Logger>
<Root level="trace">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Intenté también con xml sin <Logger>
etiquetas, y la especificación del paquete y en varios directorios de carpetas / paquetes, pero no ayudó. Ahora mi log4j2.xml
archivo se encuentra directamente en la carpeta del proyecto en eclipse.
Respuestas:
¿Es este un simple proyecto java de eclipse sin maven, etc.? En ese caso, deberá colocar el
log4j2.xml
archivo en lasrc
carpeta para poder encontrarlo en la ruta de clases. Si usa maven, póngalo debajosrc/main/resources
osrc/test/resources
fuente
sbt
laslog4j2.xml
entradassrc/main/resources
también.Debe elegir una de las siguientes soluciones:
fuente
-Dlog4j.configurationFile
es lo que necesitaba, ya que el proyecto en el que estoy trabajando no está basado en Maven. AwesomeEstaba siguiendo las documentaciones: Apache Log4j2 Configuratoin y Apache Log4j2 Maven en la configuración de log4j2 con yaml. Según la documentación, se requieren las siguientes dependencias de maven:
y
El simple hecho de agregar estos no eligió la configuración y siempre dio error. La forma de depurar la configuración mediante la adición
-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=TRACE
ayudó a ver los registros. Más tarde tuvo que descargar la fuente usando Maven y la depuración ayudó a comprender las clases dependientes de log4j2. Están listados enorg.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory
:Agregar mapeo de dependencia para
jackson-dataformat-yaml
no tendrá las dos primeras clases. Por lo tanto, agregue lajackson-databind
dependencia para que la configuración de yaml funcione:Puede agregar la versión consultando la
Test Dependencies
sección dellog4j-api
elemento de versión del Repositorio MVN . Por ejemplo, para la versión 2.8.1 de log4j-api, consulte este enlace y busque lajackson-databind
versión.Además, puede usar el siguiente código Java para verificar si las clases están disponibles en la ruta de clases:
fuente
Además de lo que escribió Tomasz W, al iniciar su aplicación, podría usar la configuración:
para solucionar la mayoría de los problemas de configuración.
Para obtener más información, consulte Preguntas frecuentes de Log4j2: ¿Cómo depuro mi configuración?
fuente
Eclipse nunca verá un archivo hasta que fuerce una actualización del IDE. ¡Es una característica! Entonces, puede colocar el archivo en todo el proyecto y Eclipse lo ignorará por completo y arrojará estos errores. Presiona actualizar en la vista del proyecto Eclipse y luego funciona.
fuente
En mi caso, tuve que ponerlo en la carpeta bin de mi proyecto, incluso el hecho de que mi classpath está configurada en la carpeta src. No tengo idea de por qué, pero vale la pena intentarlo.
fuente