2013-03-11 2 views
3

У меня есть приложение, работающее на Websphere в среде сервера Windows с использованием log4j. Система регистрируется и, по-видимому, придерживается предела MaxFileSize, как определено в log4j.properties (20 КБ - см. Ниже), но не скопирует файлы журнала. Скорее, это просто перезапись существующего файла журнала.log4j файлы не работают - Websphere 7, Windows

Вот мой файл log4j.properties определен в 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 

Моя теория состоит в том, что приложение/JVM держит на ссылку на файл журнала, когда log4j пытается свернуть файл, и что Windows видит этот файл в использовании и не позволяет ему перемещаться. Но я не знаю этого точно.

Кто-нибудь видит, почему файлы журнала не перевернутся? Или моя теория может быть правильной?

ответ

3

Решение моей проблемы состояло в том, чтобы установить log4j как общий файл jar в WebSphere. Каждое отдельное приложение имело файловый дескриптор, открытый для log4j, не позволяя журналам катиться, когда они попали в MaxFileSize.

Как только я установил log4j как общую банку и отскочил от сервера, журналы свернули как ожидалось. Я тестировал это с несколькими размерами для MaxFileSize, и все работало так, как ожидалось.

Смежные вопросы