Acabo de recoger una aplicación web existente en el trabajo que se supone que debe registrar su actividad utilizando Log4J. Configuré mi espacio de trabajo exactamente como me dijeron y todo lo demás (conexión de base de datos, autenticación, etc.) funciona bien, excepto que no se escribe nada en el archivo de registro. Otras aplicaciones similares no tienen problemas para iniciar sesión.Log4J no registra nada
He visto la consola de WebSphere cuando se inicia la aplicación y no hay errores allí que puedan indicar por qué Log4J no está iniciando sesión.
Mencioné esto a otro desarrollador (que una vez trabajó en esta aplicación, pero no por un tiempo y está más desactualizado que yo) que comentó que era un comportamiento muy extraño, pero no tenía idea de por qué podría no registrarse y no informar ningún error.
He revisado el archivo de configuración y el archivo de propiedades y todo parece OK. Sospecho que Log4J nunca está leyendo log4j.xml, pero no estoy seguro de eso. Ha pasado un tiempo desde que trabajé con Log4J. ¿Alguien tiene algunos buenos consejos para solucionar este tipo de problemas?
PD: Hay instancias de esta aplicación que se implementan en varios servidores de prueba/QA/prod y todas estas instancias funcionan bien. Es solo en estaciones de trabajo locales que el registro parece fallar silenciosamente.
Actualización: Por lo tanto, no parece ser un problema con la forma en que se despliega la aplicación. Cambié el modo del cargador de clases a "Parent Last" y puedo ver que el archivo Log4J se está leyendo al menos ahora. Y la primera acción que intento desencadena un ClassNotFoundException
diciendo que org.apache.commons.logging.impl.Log4jFactory
no se puede encontrar.
segunda actualización: he notado algo extraño ... La aplicación tiene dos proyectos de Guerra - una de ellas es para la interfaz de usuario y el otro es para algunos servicios web. El proyecto que es para la IU es registrando con éxito sus operaciones en el archivo de registro. El proyecto de servicio web es el que falla con el ClassNotFoundException
. Ambos tienen commons-logging.jar enumerados como una dependencia de módulo JavaEE, y ninguno de ellos tiene una configuración de registro específica del proyecto (todos los archivos de configuración están en un proyecto de recursos).
Una diferencia importante es que ese proyecto de interfaz de usuario incluye algunos otros marcos internos (pre-compilados como JAR) que podría ya incluyen configuraciones de registro necesarios y tal vez ahí es donde la diferencia es.
También traté de usar la respuesta (un archivo llamado org.apache.commons.logging.LogFactory en los servicios META-INF/con una línea que contiene: "org.apache.commons.logging.impl.Log4jFactory") de esta pregunta: Websphere all logs are going to SystemOut.log pero no pareció ayudar.
¿Qué tipo de instancia de registrador es? Como en RollingFileAppender – Woot4Moo
@ Woot4Moo: es un FileAppender. – FrustratedWithFormsDesigner
¿Puedes publicar tu archivo de configuración? ¿Son las configuraciones iguales en todos los entornos? – evanwong