2016-05-02 2 views
2

У меня есть веб-приложение с использованием log4j2. Журналы должны создаваться ежедневно.log4j2 RollingFile Appender не меняет имя файла на Tomcat?

Проблема: содержимое старого файла никогда не удаляется, но любой новый день просто добавляется к этому файлу. Так оно растет непрерывно. Является ли следующая confniguration правильной в целом, при запуске на tomcat8?

log4j2.xml:

<Configuration> 
    <Appenders> 
     <RollingFile name="TEST" fileName="d:\test-application.txt" filePattern="d:\test-application-%d{yyyy-MM-dd}.log"> 
      <Policies> 
       <TimeBasedTriggeringPolicy modulate="true"/> 
      </Policies> 
     //... 
     <RollingFile> 
    //... 
    </Appenders> 
    //... 
</Configuration> 

Maven:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
      </exclusion> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-log4j2</artifactId> 
    </dependency> 

ответ

1

Вы не первый человек, чтобы сообщить об этом поведение и общий фактор, кажется, для Windows. Log4j пытается переименовать файл. Если это не удается, он пытается скопировать и удалить, а затем удалить файл. Если в файле есть блокировка, переименование завершится неудачно, и, скорее всего, копия завершится успешно, но удаление завершится неудачей. Но код по-прежнему использует метод удаления объекта File, что плохо отражается на сообщениях об ошибках, и Log4j не проверяет возвращаемое значение, поэтому он терпит неудачу.

Это поведение является ошибкой и должно быть исправлено, но на самом деле это не решит вашу проблему - это просто даст вам знать об этом. Чтобы исправить это, вам нужно выяснить, что мешает переименованию преуспеть.

0

То, что мы часто видим, это несколько процессов или несколько веб-приложений, использующих ту же конфигурацию log4j2.xml и запись в один файл. Один процесс затем предотвратит удаление другого файла.

У меня возникла эта проблема, когда я сохранил файл журнала в редакторе, и из-за этого проскальзывание в полночь закончилось.

+0

Это происходит, главным образом, когда я использую параллельное развертывание tomcats, таким образом устанавливая обновленную версию из военного файла с 'myfile ## 3.war', а затем распаковывая предыдущую версию после запуска новой. Может быть, динамически нераспределенная версия по-прежнему блокирует файл журнала? Оба приложения пишут то же самое ... – membersound

+0

Можете ли вы протестировать, используя другую конфигурацию (другой файл журнала) при параллельном развертывании? –

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