Tengo una clase JAVA que inicia varios subprocesos que tienen identificaciones únicas. Cada subproceso debe iniciar sesión en un archivo de registro único, con el nombre de ID.log.¿Cómo registrar múltiples hilos en diferentes archivos de registro?
Porque sólo obtener el ID único en tiempo de ejecución, tengo que configurar Log4J programáticamente:
// Get the jobID
myJobID = aJobID;
// Initialize the logger
myLogger = Logger.getLogger(myJobID);
FileAppender myFileAppender;
try
{
myFileAppender = new FileAppender(new SimpleLayout(), myJobID + ".log", false);
BasicConfigurator.resetConfiguration();
BasicConfigurator.configure(myFileAppender);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Ahora bien, esto funciona bien si comienzo a los trabajos de forma secuencial - pero cuando comienzo a 2 hilos (de la misma clase) simultáneamente, ambos registros se crean pero los registros se mezclan: el segundo hilo se registra en el primero y el segundo registro.
¿Cómo puedo asegurarme de que cada instancia sea única? Ya traté de dar un nombre único a cada instancia de registrador, pero no cambió nada.
¿Hay alguna buena razón para querer hacer esta distinción en el código java? La práctica general es mantener el inicio de sesión en un archivo y luego ejecutar un procesamiento posterior para extraer/agregar? Consulte también http://logging.apache.org/log4j/1.2/faq.html#a3.1 – havexz
Duplicado de [¿Cómo configuro las propiedades de log4j para que cada subproceso genere su propio archivo de registro?] (Http://stackoverflow.com/q/1172113/127035) – sudocode