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 :
Et log4j.properties :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
Comment s'y prendre pour que ça marche ? Un appender DailyRollingFile bien configuré pourrait-il répondre à ce besoin ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci !
Partager