Bonjour,
jaimerai bien savoir comment faire pour dispatcher les logs INFO/DEBUG & ERROR dans 2 fichiers de logs differents au lieu d'ecrire tout dans le meme fichier
Merci
Bonjour,
jaimerai bien savoir comment faire pour dispatcher les logs INFO/DEBUG & ERROR dans 2 fichiers de logs differents au lieu d'ecrire tout dans le meme fichier
Merci
Il faut modifier le fichier log4j.properties.
Voici une partie de code trouvé ici
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 # Debug log4j.appender.Debug=org.apache.log4j.RollingFileAppender log4j.appender.Debug.File=./log/Debug.log log4j.appender.Debug.MaxFileSize=20000KB log4j.appender.Debug.Threshold=DEBUG log4j.appender.Debug.MaxBackupIndex=1 log4j.appender.Debug.layout=org.apache.log4j.PatternLayout log4j.appender.Debug.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}] %-5p [%t] %x%30F:%4L - %m%n # Info log4j.appender.Info=org.apache.log4j.RollingFileAppender log4j.appender.Info.File=./log/Info.log log4j.appender.Info.MaxFileSize=20000KB log4j.appender.Info.Threshold=INFO log4j.appender.Info.MaxBackupIndex=1 log4j.appender.Info.layout=org.apache.log4j.PatternLayout log4j.appender.Info.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}] %-5p [%t] %x%30F:%4L - %m%n
Ok Merci,
sinon ya til moyen de passer les noms des fichiers de logs en paramètre dans le code Java ??
Merci
Il existe un moyen pour géré dynamiquement le fichier log, après que le logger a charger les paramètre du fichier de configuration, il faut parcourir les sorties du logger, et pointer ensuite sur l'objet de la sortie qu'on veut modifier, après modifier le fichier.
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 Logger rootLogger = Logger.getRootLogger(); Enumeration appenders = rootLogger.getAllAppenders(); FileAppender fa = null; while(appenders.hasMoreElements()) { Appender currAppender = (Appender) appenders.nextElement(); if(currAppender instanceof FileAppender) { fa = (FileAppender) currAppender; //on récupère le fichier de sortie } } if(fa != null) { fa.setFile(logFileName); // on modifie le fichier de sortie fa.activateOptions(); } else { log.info("No File Appender found"); }
si j'ai bien compris,
il faut s'amuser à chaque fois à changer la sortie de l'appender,
yatil pas moyen de définir dès le debut le nom de chaque fichier de sortie?
Merci
Bonjour,
dans mon fichier de conf , j'ai :
et dans mon code en faisant :
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 # Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=./log/log.log log4j.appender.R.MaxFileSize=100KB # Keep one backup file log4j.appender.R.MaxBackupIndex=1 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # Debug log4j.appender.Debug=org.apache.log4j.RollingFileAppender log4j.appender.Debug.File=./log/Debug.log log4j.appender.Debug.MaxFileSize=20000KB log4j.appender.Debug.Threshold=DEBUG log4j.appender.Debug.MaxBackupIndex=1 log4j.appender.Debug.layout=org.apache.log4j.PatternLayout log4j.appender.Debug.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}] %-5p [%t] %x%30F:%4L - %m%n # Info log4j.appender.Info=org.apache.log4j.RollingFileAppender log4j.appender.Info.File=./log/Info.log log4j.appender.Info.MaxFileSize=20000KB log4j.appender.Info.Threshold=INFO log4j.appender.Info.MaxBackupIndex=1 log4j.appender.Info.layout=org.apache.log4j.PatternLayout log4j.appender.Info.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}] %-5p [%t] %x%30F:%4L - %m%n
dans mes logs de sortie je vois qu'un seul :
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 Logger rootLogger =logger.getRootLogger(); Enumeration appenders = rootLogger.getAllAppenders(); while (appenders.hasMoreElements() ){ Appender app = (Appender)appenders.nextElement(); if ( app instanceof FileAppender ){ logger.info("Appended File=" + ((FileAppender)app).getFile()); } }
Appended File=./log/log.log
J'attends vos reponses car j'ai besoin de rediriger les logs d'info vers un fichier et les logs d'info vers un autre.
Merci
Merci
En plus est ce possible avec log4j de definir de façon dynamique sans passer par le fichier de conf le nom de fichier de sortie pour chaque level : error et info à part,
Merci
tu as créé des appender, mais tu ne les a pas lié à des loggers. Dans ton code, il manque donc la ligne:
Qui signifie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 log4j.logger.rootLogger=DEBUG, R, Info, Debug
tout ce qui est au moi du niveau debug, pour le rootlogger, est à envoyer vers les appenders R, Info et Debug
Tu peux très bien te passer de fichier de config, entièrement ou partiellement. Par exemple
avec fichier de config partiel:
sans fichier de config:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Properties props = .... charger config par défaut props.put(....) // modifier des options de configuration par le code PropertyConfigurator.configure(props);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Appender appender = .... // créer une instance d'appender qui va bien et la configurer avec ses méthodes BasicConfigurator.configure(appender); // ajouter cet appender à la racine // ou Logger.getLogger(....).addAppender(appender);
Partager