style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Log4j en un Proyecto

Hola a todos como están, lo que sucede es que estoy tratando de montar log4j en un proyecto que tengo en el cual solo implemento un war y la persistencia la estoy manejando con hibernate, por ahora estoy tratando de montar log4j para llevar un adecuado registro de logs, bueno ya descargue el jar lo agregue a las dependencias de mi proyecto, cree el archivo de configuracion log4j y lo puse en la carpeta default del sources: el archivo de configuración luce así:

#### Use two appenders, one to log to console, another to log to a file
# log4j.rootCategory=debug, stdout, R
log4j.rootLogger=debug, stdout, R

# Print only messages of priority WARN or higher for your category
# log4j.category.your.category.name=WARN
# Specifically inherit the priority level
#log4j.category.your.category.name=INHERITED

# Print only messages of level WARN or above in the package
log4j.logger.testlogging=DEBUG

#### First appender writes to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

#### Second appender writes to a file
#log4j.appender.R=org.apache.log4j.FileAppender
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=pernix_example.log

# Control the maximum log file size
log4j.appender.R.MaxFileSize=256KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=1

# Truncate 'test' if it aleady exists.
#log4j.appender.R.Append=false

log4j.appender.R.layout=org.apache.log4j.PatternLayout
# log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.appender.R.layout.ConversionPattern=%n%p - %m

con esto en mi clase hago un import de log 4j
import org.apache.log4j.*;

creo una variable estática para acceder a las propiedades del log4j:
static Logger cat = Logger.getLogger(OperadorController.class.getName());

luego en una función hago lo siguiente:
cat.info("Inicio del programa()");
cat.info("Mensaje de bitacora con INFO");
cat.error("Mensaje de bitacora con ERROR");
cat.fatal("Mensaje de bitacora con FATAL ERROR");
cat.debug("Llamando al init()");

Todo marcha correcto sin errores, pero no veo la carpeta .log en mi proyecto o sea no se genera, según lo que he leído, me falta Copiar el jar de log4j a mi classpath, la cosa es que estoy en ubuntu, no se si este paso sea estrictamente necesario y de ser así, como lo debo hacer?

Agradezco de antemano cualquier ayuda que me puedan brindar..
muchas gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

war

Dices que es un war donde estás poniendo esta configuración. El log4j.properties debe quedar en el WEB-INF/classes de tu war. Y la ruta al archivo debe ser absoluta, de otro modo va a quedar en un lugar que no vas a encontrar (el directorio de trabajo o temporal del contenedor que usas, y eso es muy volátil).

Efectivamente debes tener el log4j en el directorio lib de tu war para que esto funcione.

Si el contenedor que usas ya tiene log4j, podría haber algún conflicto y que los logs de tu aplicación se estén escribiendo en el del contenedor (porque al estar log4j.jar en el classloader del contenedor, se cargan las properties del contenedor y no las de tu war).

Imagen de rasilvap

no veo donde se genera el archivo .log

Hola de nuevo ya coloque el archivo de configuraciones en el WEB-INF/classes de mi war, pero ocurre lo mismo de antes, todo funciona bien pero no veo donde puede estar quedando el archivo.log generado o no se si de verdad lo está generando, sugeriste algo de que la ruta del archivo debe ser absoluta, en que parte la puedo configurar? el contenedor que uso es glasfish versión 2.1 te agradezco mucho cualquier ayuda que puedas brindarme, muchisimas gracias.

Imagen de ezamudio

a ver

log4j.appender.R.File=pernix_example.log

Ahí estás poniendo solamente el nombre del archivo. Ponle la ruta completa, p.ej. /tmp/bla.log (obvio no pongas /tmp, más bien algo como /var/log/tu_app pero que el dir tu_app sea del usuario que corre el glassfish).

Imagen de rasilvap

me sigue sin aparecer el archivo

Hola como estas, que pena volver a responder tan tarde lo que pasa es que necesito enviar la ruta relativa del proyecto para poder generar el log en ese sitio, no se como lo podría hacer y no se porque razón no se está generando el archivo .log en ningún sitio mi .properties esta en el web-inf/classes pero no se está generando el archivo no se si es porque le estoy pasando la ruta mal, no se que pueda pasar, agradezo mucho tu colaboración.

Muchas gracias

Imagen de ezamudio

ruta

Ruta relativa es poco probable que te funcione. Necesitas poner una ruta absoluta, aunque sea ayudándote de variables de entorno para obtener la ruta del contenedor de tu aplicación.

Si usas el directorio de trabajo de la aplicación, tu log será volátil, porque al hacer redeploy o detener el contenedor se puede perder todo el directorio de trabajo. No tiene caso que guardes logs ahí.

Si tu properties lo tienes en WEB-INF/classes entonces debes tener el log4j.jar en WEB-INF/lib para que se cargue o no va a funcionar.

Imagen de rasilvap

solucionado

ok ya esta solucionado, muchas gracias

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">