Мы используем log4j 1.2.17 через slf4j-log4j12 1.7.7 с Java 8. Я запускаю приложение из Eclipse 4.4.1 на Windows 7 Professional 64-bit ,log4j RollingFileAppender не записывается в журнал до закрытия приложения
Наш файл корневой log4j.properties
выглядит следующим образом:
# Root logger option
log4j.rootLogger=INFO, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p (%c{1}) [%d] - %l: %m%n
В приложении мы создали качению файл Appender, основанный на конфигурации:
EnhancedPatternLayout patternLayout = new EnhancedPatternLayout("%-5p (%c{1}) [%d] - %l: %m%n");
RollingFileAppender rollingFileAppender = new RollingFileAppender(patternLayout, logPath, true);
rollingFileAppender.setMaxBackupIndex(5);
rollingFileAppender.setMaxFileSize(5MB);
Logger.getRootLogger().addAppender(rollingFileAppender);
Это работает хорошо ... когда приложение наконец, закрыта! Пока приложение работает, файл журнала находится на нулевом байте, что не очень полезно.
(В этой версии нашего приложения мы перешли от использования прямого log4j с использованием slf4j-> log4j Я не помню навскидку, если поведение было по-другому, прежде чем мы перешли.).
Обновления: Я прослеживается через создание настоящего писателя. log4j создает FileOutputStream
, а затем обертывает его в OutputStreamWriter
, который затем обертывается в CountingQuietWriter
, который вызывается приложением. Флаг bufferedIO
выключен. Я также проследил, записав сообщение журнала, и он, кажется, записывается нормально на CountingQuietWriter
->OutputStreamWriter
->FileOutputStream
. Однако ничего не появляется в файле журнала, пока я не закрою приложение.
Почему приложение не записывается в журнал немедленно или, по крайней мере, так часто после заполнения буфера?
Humm ... Это отлично работает для меня. Я использую Windows 7 с Java 8 и slf4j 1.7.7 –
Работает ли это, если вы настраиваете этот appender в log4j.properties? – ToYonos
Являются ли эти журналы из приложения или из тестов? Если из тестов вы запускаете их из уверенного/отказоустойчивого? У меня была такая же проблема из-за параллельных тестов выполнения в приложении, что помогло изменить конфигурацию safefire/failafe. –