Puse log4j en mi buildpath, pero recibo el siguiente mensaje cuando ejecuto mi aplicación:
log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
¿Qué significan estas advertencias? ¿Cuál es el appender aquí?
Respuestas:
Esta breve introducción a la guía log4j es un poco antigua pero aún válida.
Esa guía le dará información sobre cómo usar los registradores y los anexos.
Solo para comenzar, tiene dos enfoques simples que puede tomar.
El primero es agregar esta línea a su método principal:
El segundo enfoque es agregar este
log4j.properties
archivo estándar (tomado de la guía mencionada anteriormente) a su classpath:fuente
log4j.rootLogger=DEBUG, A1
es la línea que me faltaba todo el tiempo.Parece que necesita agregar la ubicación de su
log4j.properties
archivo a Classpath en Eclipse.Asegúrese de que su proyecto esté abierto en Eclipse, luego haga clic en el menú "Ejecutar" en la parte superior de Eclipse y haga clic en lo siguiente:
El mensaje de error ya no debería aparecer.
fuente
Solución rápida:
agregar código a la función principal :
cree un archivo llamado log4j.properties en / path / to
fuente
Esto es sólo una advertencia.
Fijación
Esto ocurre cuando los archivos de configuración por defecto
log4j.properties
ylog4j.xml
no puede ser encontrado y las lleva a cabo la aplicación necesita ninguna configuración explícita.Para solucionarlo, simplemente cree / copie
log4j.properties
olog4j.xml
en su ubicación en el classpath (generalmente lo mismo que los archivos jar).Java opción configurar opcionalmente:
-Dlog4j.configuration=file:///path/to/log4j.properties
.Depuración
Para la depuración, puede intentar usar el
-Dlog4j.debug=true
parámetro.Configuración de
log4j.properties
Configuración de muestra de
log4j.properties
:Aquí hay otro archivo de configuración que usa múltiples apéndices:
Apache Solr
Si usa Solr , copie
<solr>/example/resources/log4j.properties
en una ubicación en el classpath .La configuración de muestra de
log4j.properties
Solr es así:Ver también:
fuente
La mayoría de las respuestas aquí sugirieron que el
log4j.properties
archivo se coloque en la ubicación correcta (para el proyecto maven, debe ubicarse ensrc/main/resources
)Pero para mí, el problema es que mi
log4j.properties
no está configurado correctamente. Aquí hay una muestra que me funciona, puedes probarla primero.fuente
Como se explicó anteriormente, hay 2 enfoques
El primero es agregar esta línea a su método principal:
El segundo enfoque es agregar este archivo log4j.properties estándar a su classpath:
Mientras toma el segundo enfoque, debe asegurarse de inicializar el archivo correctamente, por ejemplo.
Asegúrese de crear la carpeta requerida para almacenar archivos de registro.
fuente
Utiliza el
Logger
en su código para registrar un mensaje. ElAppender
es un objeto agregado a unLogger
para escribir el mensaje a un objetivo específico. HayFileAppender
que escribir en archivos de texto oConsoleAppender
escribir en la consola. Debe mostrar su código de la configuración de Logger and Appender para obtener más ayuda.lea el tutorial para comprender mejor la interacción de Logger y Appender.
fuente
Asegúrese de que el archivo de propiedades se haya configurado correctamente. Y de nuevo, parece que el compilador no puede encontrar el archivo de propiedades, puede establecerlo de la siguiente manera en el pom (solo cuando usa el proyecto maven).
fuente
Me sale el mismo error. Aquí el problema que lleva a este mensaje de error:
Creo algunos objetos que usan el Logger antes de configurar el log4j:
Solución: configure log4j al principio en el método principal:
fuente
Creo que debería entender dónde busca el archivo jar log4j o el código Java los archivos de configuración log4j.
src/main/resources/log4j.properties
es el camino de Eclipse. Colóquelos en una ubicación adecuada para que no tenga que codificar la ruta absoluta en el código.Lea mi artículo y solución de muestra para ese http://askyourquestions.info/2016/03/27/how-to-see-where-the-log-is-logger-in-slf4j/
fuente
Otra razón por la que esto puede suceder (en RCP4) es que está utilizando múltiples marcos de registro en su archivo de destino. Como ejemplo, esto ocurrirá si usa una combinación de slf4j, log4j y ch.qos.logback.slf4j en la pestaña de contenido de los archivos de destino.
fuente
Agregue lo siguiente como primer código:
fuente
En mi caso, el error fue la bandera " aditividad ". Si es "falso" para su paquete de proyecto raíz, entonces los paquetes secundarios no tendrán un apéndice y verá el error " appender no encontrado ".
fuente
Me enfrenté al mismo problema cuando intenté ejecutar la clase de prueba JUnit.
El problema se resuelve después de agregar manualmente el archivo log4j.properties en la carpeta src / test / resources.
Agregar el código siguiente al archivo log4j.properties resolvió el problema:
fuente
Me encontré con este problema al intentar construir un jar ejecutable con maven en intellij 12. Resultó que debido a que el archivo de manifiesto de Java no incluía una ruta de clase, el archivo de propiedades log4j no se podía encontrar en el nivel raíz (donde el el archivo jar se ejecutó desde)
FYI estaba obteniendo el registrador de esta manera:
Y pude hacerlo funcionar con un archivo pom que incluía esto:
fuente
Asegúrese de que su proyecto esté abierto en Eclipse, luego haga clic en el menú "Ejecutar" en la parte superior de Eclipse y haga clic en lo siguiente:
correr
Ejecutar configuraciones
Classpath (pestaña)
Entradas de usuario
agregar jarra a la derecha
agregar archivo jar log4j
Aplicar
correr
El mensaje de error ya no debería aparecer.
fuente
La razón puede ser la falta de la palabra
static
en algunos:Si hago que el registrador sea el campo de instancia, recibo exactamente esta misma advertencia:
Lo que es peor, la advertencia apunta no a
ProcessorTest
dónde vive el error, sino a una clase absolutamente diferente (Remitente) como fuente de problemas. ¡Esa clase tiene el registrador de conjuntos correcto y no necesita ningún cambio! ¡Podríamos buscar el problema por siglos!fuente
Me enfrenté al mismo problema cuando uso log4j2. Mi problema es causado por usar una biblioteca dependiente incorrecta:
En cambio, debería usar:
En mi caso, tengo un log4j2.xml definido en mi directorio de "recursos", y especificado para usarlo por:
fuente
Log4J muestra este mensaje de advertencia cuando el código Log4j Java está buscando crear una primera línea de registro en su programa.
En este momento, Log4j hace 2 cosas
log4j.properties
archivolog4j.properties
Si
log4J
no encuentra ellog4j.properties
archivo o si el apéndice declarado enlog4j.rootlogger
no está definido en otra parte dellog4j.properties
archivo, se muestra el mensaje de advertencia.PRECAUCIÓN: el contenido del archivo de propiedades debe ser correcto.
El siguiente contenido NO es correcto
¡porque el
file
appender se declara en LOWER-CASE en lalog4j.rootlogger
declaración y se define en la declaración log4j.appender usando UPPER-CASE!Un archivo correcto sería
Si se utiliza MAVEN, debe colocar los archivos log4j.properties en
src/main/resources
Y comenzar una compilación de MAVEN.El archivo Log4j.properties se copia en la
target/classes
carpeta.¡Log4J usa el
log4j.properties
archivo que encontrótarget/classes
!fuente
Yo tuve este problema también. Olvidé marcar el directorio de recursos en IntelliJ IDEA
fuente
Si está utilizando Eclipse y este problema apareció de la nada después de que todo funcionó bien de antemano, intente hacerlo
Project - Clean - Clean
.fuente
Mi instalación de Eclipse no se pudo encontrar
log4j.properties
al ejecutar pruebas JUnit desde Eclipse, aunque el archivo estaba ubicado ensrc/test/resources
.La razón fue que Eclipse (o el conector m2e ) no copiaba el contenido de
src/test/resources
la carpeta de salida esperadatarget/test-classes
; la causa raíz era que en las propiedades del proyecto en Java Build Path -> pestaña Fuente -> Carpetas de origen en la ruta de compilación -> src / prueba / recursos , de alguna manera hubo unaExcluded: **
entrada. Eliminé esa entrada excluida .Alternativamente, podría haber copiado manualmente
src/test/resources/log4j.properties
atarget/test-classes/log4j.properties
.fuente
Si
log4j.properties
realmente está en el classpath, está utilizando Spring Boot para hacer un archivo WAR para su implementación en un servidor de aplicaciones, está omitiendo unweb.xml
archivo a favor de la configuración automática de Spring Boot y no está recibiendo ningún mensaje de registro, necesita explícitamente configurar Log4j. Suponiendo que está utilizando Log4j 1.2.x:fuente
Tal vez agregar el proyecto relevante contiene log4j en la ruta de compilación de Java, agregué mahout_h2o cuando encontré este problema en un proyecto de mahout usando eclipse, ¡funciona!
fuente
Si trabaja junto con muchos proyectos, puede enfrentar un problema de estilo.
* debe tener un archivo lof4j.properties y este archivo incluye las propiedades de registro de otro proyecto.
* Además, puede intentar colocar los archivos de propiedades log4j en la ruta src cuando el proyecto funciona Linux OS, las bibliotecas de otro proyecto y los archivos log4.properties pueden estar en una carpeta en una ubicación en el classpath.
fuente
Primera importación:
Luego agregue el siguiente código al método principal:
Cree un archivo en la ruta y agregue el código siguiente a ese archivo.
fuente
La solución en este sitio funcionó para mí https://crunchify.com/java-how-to-configure-log4j-logger-property-correctly/ . Ahora no veo ninguna advertencia de log4j
Puse esto en un archivo log4j.properties que puse en src / main / resources
fuente
En primer lugar: cree un archivo log4j.properties
Colóquelo en src / main / resources /
Después de eso, use estas 2 dependencias:
Es necesario agregar esta dependencia final al archivo POM:
fuente
Considere el argumento log4j JVM Dlog4j.configuration
En general:
Agregue el argumento JVM que señala el archivo de configuración log4j. La sintaxis es la siguiente:
Una muestra de una línea de comando real es como la siguiente:
Para usuarios de IntelliJ IDE:
Consejos:
1.Los usuarios de Eclipse IDE encontrarán un enfoque equivalente
2.Para el editor de configuración de ejecución / depuración, es muy probable que, al comienzo de los tiempos, su archivo ejecutable particular no esté allí. Dependiendo del tamaño del proyecto en el que está trabajando actualmente, puede ser desagradable navegar por los directorios para encontrarlo. Es menos complicado si solo ejecuta / ejecuta el archivo (haga clic en reproducir) una vez antes de proceder a ejecutar / depurar la configuración sin importar el resultado de la ejecución.
3. Preste atención a su directorio de trabajo, rutas relativas y classpath.
fuente
Para mí, la razón era aparentemente diferente y el mensaje de error era engañoso.
Con solo esto en mi build.gradle, se quejaría de que faltaba slf4j al comienzo del registro, pero aún registra las cosas, aunque en un formato deficiente:
Agregar esa dependencia causaría el mensaje de error discutido "no se encontraron apéndices" para mí, a pesar de haberlos definido en
src/main/java/log4j.properties
:Finalmente, agregar la siguiente dependencia (que solo adiviné al copiarlo de otro proyecto) resolvió el problema:
No sé por qué, pero con esto funciona. ¿Alguna idea sobre eso?
fuente