[Log4J] Dater le fichier de log
Hello,
Je souhaite dater mon fichier de log (du type fichier_aaaammjj.log) lors de sa création. J'ai tenté un appender DailyRollingFileAppender mais celui-ci ne date le log que lorsque la date change. De plus, il semble impossible de nommer le fichier comme je le veux.
J'ai donc créé une classe LoggerManager qui récupère les paramètres de log4j.properties et modifie le nom du fichier lors de l'initialisation. Mais j'ai une erreur "attempted to append to closed appender"...
Voici la classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class LoggerManager {
private static final Logger logger = Logger.getLogger("org.mon.package");
private static boolean initialized;
public static Logger getLogger() {
if (!initialized) {
init();
}
return logger;
}
public static void init() {
String fileName;
SimpleDateFormat sdf;
FileAppender datedFileAppender;
PropertyConfigurator.configure("log4j.properties");
sdf = new SimpleDateFormat("yyyyMMdd");
datedFileAppender = (FileAppender) logger.getAppender("file-dumper");
fileName = datedFileAppender.getFile();
fileName = fileName.substring(0, fileName.length()-4) + sdf.format(new Date()) + fileName.substring(fileName.length()-4, fileName.length());
datedFileAppender.setFile(fileName);
logger.removeAllAppenders();
logger.addAppender(datedFileAppender);
initialized = true;
}
} |
Et log4j.properties :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
# Loggers
log4j.rootLogger=DEBUG, console-dumper
log4j.logger.org.mon.package=DEBUG, file-dumper
# Appender console
log4j.appender.console-dumper=org.apache.log4j.ConsoleAppender
log4j.appender.console-dumper.layout=org.apache.log4j.PatternLayout
log4j.appender.console-dumper.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} [%-5p] %m%n
# Appender fichier
log4j.appender.file-dumper=org.apache.log4j.FileAppender
log4j.appender.file-dumper.File=D:/trace.log
log4j.appender.file-dumper.layout=org.apache.log4j.PatternLayout
log4j.appender.file-dumper.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} [%-5p] %m%n |
Comment s'y prendre pour que ça marche ? Un appender DailyRollingFile bien configuré pourrait-il répondre à ce besoin ?
Merci !