Log4J : Daily Rolling File

Log4J : Daily Rolling File - Java - Programmation

Marsh Posté le 19-05-2009 à 09:51:47    

Bonjour,
 
J'utilise log4j avec un appender "DailyRollingFileAppender", c'est à dire qu'il me crée des fichiers log et que, à minuit, mon fichier log est suffixé par la date du jour correspondant.
 
ex: je log dans un fichier trace.log, à minuit, ce fichier sera renommé trace.log.20-05-2009 et un nouveau fichier trace.log sera crée pour la journée de demain, qui sera suffixé par la date de demain à minuit etc...
 
Bref, étant donné un répertoire, 2 dates et un pattern pour les dates, je voudrais récupérer facilement tous les fichiers log inclus entre les 2 dates données.
 
j'ai bien entendu déjà fait salement des fonctions qui permettent de faire ça en extrayant les dates de chaque fichier, puis en comparant avec les 2 dates etc, mais comme ces fichiers ont été générés avec log4j, je me suis dit qu'il existait déja surement quelque chose pour récupérer tout simplement ces fichiers.
 
En gros, je recherche une méthode de la forme
 
Collection<String> getLogFiles(String directory,String pattern, Date date1, Date date2) ou
Collection<File> getLogFiles(String directory,String pattern, Date date1, Date date2)
 
Pouvez vous m'orienter vers les bonnes librairies?

Reply

Marsh Posté le 19-05-2009 à 09:51:47   

Reply

Marsh Posté le 03-09-2009 à 02:42:40    

Bonjour,
je suis à la recherche de la bonne configuration de log4j pour la création de fichier log par journée.
je vois que vous avez déjà la solution entre tes mains  :)  
Est ce que vous pourriez m'envoyer cette config?
Merci d'avance.
 
 

liouan a écrit :

Bonjour,
 
J'utilise log4j avec un appender "DailyRollingFileAppender", c'est à dire qu'il me crée des fichiers log et que, à minuit, mon fichier log est suffixé par la date du jour correspondant.
 
ex: je log dans un fichier trace.log, à minuit, ce fichier sera renommé trace.log.20-05-2009 et un nouveau fichier trace.log sera crée pour la journée de demain, qui sera suffixé par la date de demain à minuit etc...
 
Bref, étant donné un répertoire, 2 dates et un pattern pour les dates, je voudrais récupérer facilement tous les fichiers log inclus entre les 2 dates données.
 
j'ai bien entendu déjà fait salement des fonctions qui permettent de faire ça en extrayant les dates de chaque fichier, puis en comparant avec les 2 dates etc, mais comme ces fichiers ont été générés avec log4j, je me suis dit qu'il existait déja surement quelque chose pour récupérer tout simplement ces fichiers.
 
En gros, je recherche une méthode de la forme
 
Collection<String> getLogFiles(String directory,String pattern, Date date1, Date date2) ou
Collection<File> getLogFiles(String directory,String pattern, Date date1, Date date2)
 
Pouvez vous m'orienter vers les bonnes librairies?


Reply

Marsh Posté le 03-09-2009 à 10:19:45    

Reply

Marsh Posté le 03-09-2009 à 13:47:51    

Attention,
 
Apres avoir pas mal pratique, je me suis rendu compte que cet appender n'est pas toujours conseille, pour la raison suivante:
 
A minuit, cet Appender renomme le fichier de log courant (par exemple file.log) en le suffixant par la date (ce qui peut donner file.log.2009-09-03) puis cree un nouveau fichier file.log pour les logs de la nouvelle journee.
 
Le probleme est que si le renommage de fichier foire (ce qui arrive parfois suivant l'utilisation qui est faite de log4j), les nouveaux logs vont venir effacer les precedents, d'ou une perte d'informations. En parcourant les forums, tu te rendras comptes que ca arrive a pas mal de monde.
 
Heureusement, ce probleme a enerve un developpeur suffisament motive pour implenter un nouvel Appender: le DatedFileAppender  
(voir doc ici: http://www.minaret.biz/tips/datedFileAppender.html).  
Cet appender separe aussi les logs par jour mais sans avoir recours a la technique de renommage.
Chaque jour, il cree le fichier de log correspondant avec le nom de fichier directement suffixe par la date (il n'attend pas minuit pour le faire).
 
Le seul souci de cet appender est que le format de la date n'est pas reglable. Toutefois, cet appender est libre donc rien ne t'empeche de prendre la classe et modifier le pattern (qui est ecrit en dur). Je l'ai fait, c'est facile car la classe est bien documentee.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed