2011-01-14 13 views
6

actualmente estoy usando la Clase DailyRollingFileAppender en log4j para archivo de registro diario añadiendo pero yo quiero tener los archivos de registro separados en el siguiente formato:¿Cómo se crean los archivos de registro en log4j por ejecución del programa?

DATA.log.<date>_<time>_<random_#> 

Esto debe hacerse una vez por la ejecución del programa por lo que termino con algo como ...

DATA.log.2011-01-13_12-46-38_<26> 
DATA.log.2011-01-13_12-46-38_<79> 
DATA.log.2011-01-13_12-46-38_<590> 

Donde se pueden agrupar diferentes archivos de registro de diferentes entornos.

¿Hay alguna forma de hacer esto sin tener que extender la clase FileAppender? Por lo menos, hay una manera de hacerlo:

DATA.log.<date>_<time>_<sequential_#>.log 

Gracias

Edit: Ya estoy usando DailyRollingFileAppender para obtener algo así como DATA.log.2011-01-13. Lo que quiero saber cómo hacer es hacer que el archivo de registro se transfiera después de cada ejecución del programa (o antes de cada ejecución del programa) y agregar una cadena numérica al azar al final.

+0

Relevante: –

+0

http://en.wikipedia.org/wiki/Aspect-oriented_programming Gracias a Dave. Otra pregunta, estoy tratando de agregar una propiedad a mi clase, es decir, log4j.appender.DATA.CustomProperty = value. ¿Cómo hago esto? – Kevin

+0

No importa ... es fácil, simplemente no lo uso en mayúscula:/ – Kevin

Respuesta

3

echar un vistazo a: Setting a log file name to include current date in Log4j

EDIT: Añadir esta clase a su proyecto, y lo utilizan como appender:

import java.util.Random; 

import org.apache.log4j.DailyRollingFileAppender; 

public class MyAppender extends DailyRollingFileAppender {  
    @Override 
    public void setFile(String fileName) { 
     if (fileName.indexOf("%rnd") >= 0) { 
      Random r = new Random(); 
      fileName = fileName.replaceAll("%rnd", Integer.toString(r.nextInt())); 
     } 
     super.setFile(fileName); 
    } 
} 

Entonces acaba de establecer el nombre de archivo de su appender a algo como:. Nombre del archivo% rnd.log

log4j.appender.R=MyAppender.MyAppender 
log4j.appender.R.File=.\\test.%rnd.log 
+0

Ya estoy haciendo lo que la URL que publica dice que hacer. Lo que quiero hacer es agregar una cadena aleatoria adicional al final después de cada ejecución del programa para que pueda hacer un seguimiento de múltiples registros. Voy a editar mi pregunta para esto. – Kevin

+0

Bien, trabajando en eso;). Lo tengo en algún lugar – Twister

+0

Y también puedes agregar otros patrones nuevos fácilmente. Y nosotros a través de varios proyectos – Twister

1

En su código establecido una nueva propiedad de entorno:

randomString = Long.toString(Math.abs((new Random()).nextLong()), Character.MAX_RADIX); 
System.setProperty("randomString", randomString); 

Luego, en su archivo log4j use esa variable usando ${randomString}.

Espero que ayude.

Cuestiones relacionadas