2013-03-11 5 views
3

J'ai une application s'exécutant sur Websphere dans un environnement de serveur Windows utilisant log4j. Le système se connecte et semble respecter la limite MaxFileSize définie dans le fichier log4j.properties (20 Ko - voir ci-dessous), mais pas les fichiers journaux. Au lieu de cela, il remplace simplement le fichier journal existant.Fichiers log4j non exécutables - Websphere 7, Windows

Voici mon fichier log4j.properties défini dans Websphere:

log4j.rootLogger=debug, file 

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=F:\\<log_file_directory\\<log_file_name>.log 
log4j.appender.file.MaxFileSize=20KB 
log4j.appender.file.MaxBackupIndex=50 
log4j.appender.file.Append=true 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

Ma théorie est que l'application/machine virtuelle Java tient à une référence au fichier journal lorsque log4j tente de lancer le fichier, et que Windows voit ce fichier en cours d'utilisation et l'empêche d'être déplacé. Mais je ne le sais pas à coup sûr.

Quelqu'un voit-il une raison quelconque pour laquelle les fichiers journaux ne seraient pas retournés? Ou ma théorie pourrait-elle être correcte?

Répondre

3

La solution à mon problème consistait à configurer log4j en tant que fichier jar partagé dans WebSphere. Chaque application individuelle avait un descripteur de fichier ouvert à log4j, empêchant les logs de rouler quand ils atteignaient le MaxFileSize.

Une fois que j'ai configuré log4j en tant que fichier partagé et que j'ai rebondi sur le serveur, les journaux ont été générés comme prévu. J'ai testé cela avec plusieurs tailles pour MaxFileSize et tout a fonctionné comme prévu.