Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problema con Threads y Log4j

Buenas tardes a todos.
Espero que me puedan ayudar con el problemilla que tengo. Os cuento básicamente como funciona la aplicación y después cual es el problema.

Bien, tengo un hilo principal llamado "ControlaHilos" que se encarga de levantar o eliminar otros hilos. Estos hilos son creados como instancias de una clase que se llama "HiloHijo". Original verdad? :-)
El caso es que el hilo "ControlaHilos" puede crear X hilos "HiloHijo" cada uno con su nombre. La ejecución de estos hijos es correcta, no hay ningún problema.
El problema viene con Log4j. La clase "ControlaHilos" debe dejar sus trazas en su fichero propio de log y cada uno de los "HiloHijo" en el suyo.
El error se produce porque las trazas de los HiloHijo aparecen en el fichero de log de ControlaHilos. Espero haberme explicado correctamente.
Os pongo la configuración de ControlaHilos.


LOG4J=true

log4j.rootCategory=DEBUG, ControlaHilos

# Bloque para ControlaHilos
log4j.appender.ControlaHilos.Threshold=DEBUG
log4j.appender.ControlaHilos=org.apache.log4j.RollingFileAppender
log4j.appender.ControlaHilos.ImmediateFlush=true
log4j.appender.ControlaHilos.File=${aplic.dir}/logs/ControlaHilos.log
log4j.appender.ControlaHilos.MaxFileSize=1MB
log4j.appender.ControlaHilos.MaxBackupIndex=10
log4j.appender.ControlaHilos.layout=org.apache.log4j.PatternLayout
log4j.appender.ControlaHilos.layout.ConversionPattern=%-4r %d{dd-MM-yyyy HH:mm:ss,SSS} %-5p [ %C(%L) ]===> %m%n
log4j.appender.ControlaHilos.append=true

La configuración de cada HiloHijo se hace en el constructor de la clase para que cada hilo que se crea tenga su propia configuración y escriba en su propio fichero. Os pongo la configuración.


Properties oProperties = new Properties();

oProperties.setProperty("log4j.category.HiloHijos" + sCola, Utilidad.NIVEL_TRAZAS + ", HiloHijos" + sCola);
oProperties.setProperty("log4j.appender.HiloHijos" + sCola, "org.apache.log4j.RollingFileAppender");
oProperties.setProperty("log4j.appender.HiloHijos" + sCola + ".ImmediateFlush", "true");
oProperties.setProperty("log4j.appender.HiloHijos" + sCola + ".File", Utilidad.RUTA_LOG_SALIDA + "/HiloHijos" + sCola + ".log");
oProperties.setProperty("log4j.appender.HiloHijos" + sCola + ".MaxFileSize", "1MB");
oProperties.setProperty("log4j.appender.HiloHijos" + sCola + ".MaxBackupIndex", "10");
oProperties.setProperty("log4j.appender.HiloHijos" + sCola + ".threshold", "debug");
oProperties.setProperty("log4j.appender.HiloHijos" + sCola + ".layout", "org.apache.log4j.PatternLayout");
oProperties.setProperty("log4j.appender.HiloHijos" + sCola + ".layout.ConversionPattern", "%-4r %d{dd-MM-yyyy HH:mm:ss,SSS} %-5p [ %C(%L) ]===> %m%n");
oProperties.setProperty("log4j.appender.HiloHijos" + sCola + ".append", "false");

PropertyConfigurator.configure(oProperties);

LogCola = Logger.getLogger("HiloHijos" + sCola);

Como podréis ver utilizo una clase llamada Utilidad de tipo static que utilizo como contenedora de datos de configuración.

Me podeis decir porque se mezcan las trazas saliendo las de las clases HiloHijo en el fichero de ControlHilos?

Un saludo

noviembre 7, 2012 | Unregistered Commenterfileal_v

Nadie?

noviembre 9, 2012 | Unregistered Commenterfileal_v