Después de agregar log4j a mi aplicación, obtengo el siguiente resultado cada vez que ejecuto mi aplicación:
log4j: WARN No se encontraron apéndices para logger (slideselector.facedata.FaceDataParser). log4j: WARN Inicialice el sistema log4j correctamente.
Parece que esto significa que falta un archivo de configuración. ¿Dónde debe ubicarse este archivo de configuración y cuál es un buen contenido de inicio?
Estoy usando Java simple para desarrollar una aplicación de escritorio. Así que no hay servidor web, etc.
configuration
log4j
Janusz
fuente
fuente
Respuestas:
Log4j
por defecto busca un archivo llamadolog4j.properties
olog4j.xml
en el classpath.Puede controlar qué archivo usa para inicializarse configurando las propiedades del sistema como se describe aquí (busque la sección "Procedimiento de inicialización predeterminado").
Por ejemplo:
Hará
log4j
que busque un archivo llamado customName en el classpath.Si tiene problemas, me resulta útil activar log4j.debug:
Imprimirá en System.out mucha información útil sobre qué archivo utilizó para inicializarse, qué registradores / anexores se configuraron y cómo, etc.
El archivo de configuración puede ser un archivo de propiedades java o un archivo xml. Aquí hay una muestra del formato de archivo de propiedades tomado de la página de documentación de introducción de log4j :
fuente
java -Dlog4j.configuration=customName
? Intenté Project / Preferences / Run / Debug Settings, seleccioné algunas configuraciones, hice clic en Editar, pestaña Argumentos, argumentos de VM. ¿CustomName incluye una extensión .xml?-Dlog4j.debug
puedan ayudar a depurar su configuración.Si bien configurar log4j correctamente es ideal para proyectos "reales", es posible que desee una solución rápida y sucia, por ejemplo, si solo está probando una nueva biblioteca.
Si es así, una llamada al método estático
configurará el registro básico en la consola y los mensajes de error desaparecerán.
fuente
Logger.getRootLogger().setLevel(Level.INFO);
Si acaba de deshacerse de todo (por ejemplo, si está en pruebas)
fuente
Según la página de preguntas frecuentes de Apache Log4j :
Básicamente, la advertencia No se encontraron apéndices para el registrador significa que está utilizando el
log4j
sistema de registro, pero no ha agregado Apéndices (como FileAppender, ConsoleAppender, SocketAppender, SyslogAppender, etc.) en su archivo de configuración o el archivo de configuración está desaparecido.Hay tres formas de configurar log4j: con un archivo de propiedades (
log4j.properties
), con un archivo XML y a través del código Java (rootLogger.addAppender(new NullAppender());
).log4j.properties
Si tiene un archivo de propiedades presente (por ejemplo, cuando instala Solr), debe colocar este archivo dentro de su directorio classpath .
classpath
Aquí hay algunas sugerencias de comandos en Linux para determinar el valor de su classpath:
o desde Java:
System.getProperty("java.class.path")
.Log4j XML
A continuación se muestra un archivo de configuración XML básico para log4j en formato XML:
Gato
Si está utilizando Tomcat, puede colocar su
log4j.properties
en:/usr/share/tomcat?/lib/
o/var/lib/tomcat?/webapps/*/WEB-INF/lib/
carpeta.Solr
Para la referencia, el
log4j.properties
archivo predeterminado de Solr se ve así:¿Por qué log4j no puede encontrar mi archivo de propiedades en una aplicación J2EE o WAR?
Ver también:
fuente
Puede establecer la ubicación de su log4j.properties desde el interior de su aplicación Java utilizando:
Más información está disponible aquí: https://logging.apache.org/log4j/1.2/manual.html
fuente
import
declaración siempre es útil ya que la finalización del código no es tan confiable.Encuentre un log4j.properties o log4j.xml en línea que tenga un apéndice raíz y póngalo en su classpath.
iniciará sesión en la consola. Prefiero iniciar sesión en un archivo para que pueda investigar después.
aunque para aplicaciones de registro detallado, 100 KB generalmente necesita incrementarse a 1 MB o 10 MB, especialmente para la depuración.
Personalmente configuré varios registradores y configuré el registrador raíz para advertir o nivel de error en lugar de depurar.
fuente
Otra forma de hacerlo sin poner el archivo de propiedades en el classpath es establecer la propiedad directamente desde el código de Java. Aquí está el código de ejemplo.
}
fuente
Puede configurar el nivel de registro utilizando setLevel () .
Los niveles son útiles para configurar fácilmente el tipo de información que desea que muestre el programa.
Por ejemplo:
El conjunto de niveles posibles son:
Según el manual de servicios de registro
fuente
fuente
System.out
. El javadoc para el método de configuración sin argumentos dice:Add a ConsoleAppender that uses PatternLayout using the PatternLayout#TTCC_CONVERSION_PATTERN and prints to System.out to the root category.
Para habilitar
-Dlog4j.debug
, voy a Sistema, Configuración avanzada del sistema, Variables de entorno y establezco la variable del sistema_JAVA_OPTIONS
en-Dlog4j.debug
.fuente
¿En qué te estás desarrollando? ¿Estás usando Apache Tomcat?
Tengo propiedades como esta en una aplicación Java mía.
fuente
Mi log4j se solucionó con el siguiente archivo de propiedades:
fuente
Creé el archivo log4j.properties en la carpeta de recursos junto al archivo hibernate.cfg.xml y lo rellené con el texto a continuación:
ahora me deshice de advertencias y errores
fuente
Simplemente, cree log4j.properties en la carpeta src / main / assembly. Dependiendo de si desea que los mensajes de registro se muestren en la consola o en el archivo, modifique su archivo. Lo siguiente mostrará sus mensajes en la consola.
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:
Al tomar el segundo enfoque, debe asegurarse de inicializar el archivo correctamente.
P.ej.
Asegúrese de crear la carpeta requerida para almacenar archivos de registro.
fuente
Intente establecer el atributo de depuración en log4j: nodo de configuración en verdadero.
Imprime información a medida que se lee el archivo de configuración y se usa para configurar el entorno log4j. Es posible que reciba más detalles para resolver su problema.
fuente
Registro de API - El Java API de registro facilita software de servicio y mantenimiento en sitios de clientes mediante la producción de informes de registro adecuados para el análisis de los usuarios finales, administradores de sistemas, ingenieros de servicio de campo, y los equipos de desarrollo de software. Las API de registro capturan información como fallas de seguridad, errores de configuración, cuellos de botella de rendimiento y / o errores en la aplicación o plataforma. El paquete principal incluye soporte para entregar registros de registro en formato de texto plano o XML a la memoria, flujos de salida, consolas, archivos y sockets. Además, las API de registro son capaces de interactuar con los servicios de registro que ya existen en el sistema operativo host.
Paquete java.util.logging «Proporciona las clases e interfaces de los recursos de registro de la plataforma Java.
Log4j 1.x «log4j es una popular utilidad de registro basada en Java. Log4j es un proyecto de código abierto basado en el trabajo de muchos autores. Permite al desarrollador controlar qué declaraciones de registro se envían a una variedad de ubicaciones mediante Appenders [consola, archivos, base de datos y correo electrónico]. Es totalmente configurable en tiempo de ejecución utilizando archivos de configuración externos.
Los archivos de configuración se pueden escribir en XML o en formato de propiedades Java (clave = valor).
Estructura de tabla MySQL para tabla
logdata
fuente
La solución para mí fue poner "log4j.properties" en la carpeta "src".
fuente
Si estamos utilizando el contenedor de registro de apache commons en la parte superior de log4j, entonces necesitamos tener ambos jar disponibles en classpath. Además,
commons-logging.properties
ylog4j.properties/xml
debería estar disponible en classpath.También podemos pasar la clase de implementación y el
log4j.properties
nombre yaJAVA_OPTS
sea usando-Dorg.apache.commons.logging.Log=<logging implementation class name> -Dlog4j.configuration=<file:location of log4j.properties/xml file>
. Lo mismo se puede hacer mediante la configuraciónJAVA_OPTS
en el caso de la aplicación / servidor web.Ayudará a externalizar las propiedades que se pueden cambiar en la implementación.
fuente
Esta es una forma alternativa de usar .yaml
Estructura lógica:
Muestra:
Ref: LOG4J 2 CONFIGURACIÓN: USANDO YAML
fuente
Para las pruebas, una forma rápida y sucia que incluye establecer el nivel de registro:
fuente
Solución Maven:
Encontré los mismos problemas que antes, y para una solución maven usé 2 dependencias. Esta configuración solo está pensada para pruebas rápidas si desea que un proyecto simple use un registrador, con una configuración estándar. Me imagino que desea hacer un archivo de configuración más adelante si necesita más información o ajustar sus propios niveles de registro.
fuente
Acabo de hacer esto y se solucionó el problema.
Seguido el siguiente blog
https://intellij-support.jetbrains.com/hc/en-us/community/posts/206875685-How-to-fix-log4j-WARN-console-messages-when-running-an-Application-inside-IntelliJ- Idea
Pero aquí dice como abajo
Para solucionarlo, simplemente ingrese el siguiente archivo log4j.resources en la carpeta main / resources de su proyecto
en lugar de crear log4j.resources, cree log4j.properties. Haga clic derecho en Recurso en IntelliJ -> Nuevo -> Paquete de recursos - Solo nómbrelo como log4j
fuente
Si tiene este error en Intellij IDEA incluso después de agregar el archivo
log4j.properties
olog4j.xml
en su carpeta de prueba de recursos, tal vez Intellij IDEA aún no esté al tanto de la existencia del archivo.Entonces, después de agregar el archivo, haga clic derecho en el archivo y elija Recompilar log4j.xml .
fuente