Как настроить ведение журнала Tomcat JULI для сворачивания файлов журналов?

У меня есть несколько webapps, которые используют java.util.logging. Tomcat 5.5 настроен на использование регистратора Juli, так что каждый webapp имеет свой собственный файл журнала. Проблема в том, что у Juli нет свойств для максимального размера файла и количества файлов. Используя Juli, файлы будут неограниченно расти и будут только катиться в конце дня. Кроме того, сохраняется неограниченное количество файлов журнала.

Вы можете увидеть свойства FileHandler на этой странице - Документация Apache Tomcat 5.5
Нет свойства limit или count (следующие строки ничего не делают)
org.apache.juli.FileHandler.limit=102400
org.apache.juli.FileHandler.count=5

Без изменения webapps существует ли способ получить уникальные файлы журналов для каждого приложения с некоторыми ограничениями на размер файла журнала?

UPDATE: Решение, которое я нашел, не использовало регистратор Juli вообще! java.util.logging.FileHandler.limit=102400
java.util.logging.FileHandler.count=5

Спасибо,

Грег

Ответ 1

Обновление: Теперь я вижу вашу точку зрения после прочтения. "Реализация Tomcat JULI не предназначена для полнофункциональной библиотеки регистрации, это простой мост для этих библиотек. Однако JULI предоставляет несколько свойств для настройки своих обработчиков, которые перечислены ниже". Забавно, что они говорят, что реализация java.util.Logging по умолчанию слишком ограничена, поэтому они работают вокруг нее, обеспечивая еще более ограниченную реализацию.

FileHandler javadocs

  • java.util.logging.FileHandler.limit указывает приблизительную максимальную сумму для записи (в байтах) в любой файл. Если это ноль, то нет предела. (По умолчанию нет ограничений).
  • java.util.logging.FileHandler.count указывает, сколько выходных файлов должно пройти (по умолчанию 1).

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

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = \
   2localhost.org.apache.juli.FileHandler

Ответ 2

РЕДАКТИРОВАТЬ: только что поняли, что вам нужно за ведение веб-журнала, что может быть невозможно с этой настройкой...

Мое предложение, предполагающее, что вы используете Tomcat 6.0, состоит в том, чтобы скомпилировать дополнительный компонент для полного ведения журнала и использовать Log4j для настройки журналов катания.

Инструкции по строительству здесь http://tomcat.apache.org/tomcat-6.0-doc/building.html

Затем замените tomcat-juli.jar в каталоге /bin Tomcat и поместите файл tomcat-juli-adapters.jar в каталог /lib вместе с log4j.jar и log4j.properties.

Затем используйте что-то вроде:

<appender name="file" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="logfile.log"/>
  <param name="Threshold" value="INFO"/>
  <param name="MaxFileSize" value="10MB"/>
  <param name="MaxBackupIndex" value="3"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{ISO8601} %p %m%n"/>
  </layout>
</appender>