Как установить максимальное количество рулонов и максимальный размер журнала для tomcat?

У меня проблемы с местом, поэтому нужно ограничить размер catalina.out до 10M и ограничить количество рулонов до 3 предыдущих дней. Возможно ли настроить только logging.properties? Спасибо.


person user710818    schedule 01.12.2011    source источник
comment
Я знаю, что это старый пост, но, поскольку я предпочитаю, чтобы все ответы были на этом сайте, я просто добавлю, что вы также можете подписаться на эта альтернатива. Это очень легко реализовать на машинах Unix.   -  person Edu Castrillon    schedule 11.07.2014
comment
Объединение дней и размера не поддерживается большинством конфигураций ведения журналов на основе свойств, и это сочетание не всегда интуитивно понятно. Размер файла журнала на основе размера может охватывать моменты или месяцы. Если у вас есть цель по размеру, то размер * количество оборотов удерживает вас в этом пределе. Если вам нужно хранить X дней, вам может потребоваться больше места.   -  person jla    schedule 22.09.2018


Ответы (2)


Поскольку Tomcat внутри использует JUL для регистрации, вы можете использовать системное свойство java.util.logging.config.file, чтобы указать путь к файлу свойств. Для формата этого файла свойств вы можете обратиться к вашему JRE_HOME/lib/logging.properties (который является файлом конфигурации по умолчанию, используемым JUL)

Однако JUL не поддерживает ежедневную ротацию . Если вы не возражаете, вы можете использовать его java.util.logging.FileHandler для ротации файлов журнала в зависимости от размера файла журнала:

# Define the FileHandler 
handlers= java.util.logging.FileHandler

# Configure the FileHandler
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 1024000
java.util.logging.FileHandler.count = 3
java.util.logging.FileHandler.formatter =  java.util.logging.SimpleFormatter
java.util.logging.FileHandler.append=true

Тогда каждый файл журнала будет иметь предельный размер 1024000 байт (1 МБ) и максимальное число выходных файлов журнала — 3. Вы можете обратиться к документу Javadoc java.util.logging .FileHandler для получения подробной информации о конфигурации.


Вы должны реализовать обработчик файлов, если хотите поддерживать ежедневную ротацию с помощью JUL. Я нашел пользовательскую реализацию в этом блоге . Я еще не пробовал. Вы можете передать его, если у вас есть интерес.

person Ken Chan    schedule 01.12.2011
comment
Да, но вопрос был о 3 днях, а не о 3 файлах. - person StKiller; 01.12.2011
comment
Да, вы правы, я неправильно понял вопрос. JUL, похоже, не имеет встроенного обработчика для ежедневной ротации журнала. - person Ken Chan; 01.12.2011
comment
Зачем устанавливать ограничение на 2^10*1000, это кажется немного случайным? Почему не 1МБ (1000000 байт) или 1МБ (2^20/1048576 байт) - person dan carter; 11.11.2013
comment
При использовании чередования вы можете использовать %g: '%g номер поколения для различения ротируемых журналов' - person mateuszb; 26.11.2013
comment
Как вы меняете журналы доступа tomcat (localhost_access *) в зависимости от размера? - person Balaji Boggaram Ramanarayan; 08.08.2014
comment
Можно ли указать это в файлах logging.properties в каталоге conf Tomcat? - person Dojo; 19.09.2014

По крайней мере, с Tomcat 5.5 «внутреннее ведение журнала для Apache Tomcat использует JULI, упакованную переименованную вилку Apache Commons Logging, которая жестко закодирована для использования инфраструктуры java.util.logging (JUL)».

Последние версии JULI и Access Log Valve по умолчанию используют формат даты ГГГГ-ММ-дд. Журналы juli.FileHandler называются {префикс} {дата} {суффикс}, где дата — гггг-ММ-дд, если значение rotatable равно true (по умолчанию). Если false, дата сбрасывается, и Tomcat не будет обрабатывать ротацию файлов. Существует также параметр maxDays, ограничивающий количество сохраняемых ротируемых журналов Tomcat. Например, вы можете установить это значение на 3 и хранить журналы только за три дня.

Клапан журнала доступа более настраиваемый. Например, он позволяет вам указать формат fileDateFormat по умолчанию yyyy-MM-dd, поэтому вы можете добавить HH для ротации каждый час или просто ротацию ежемесячно. Вы также можете отложить форматированное наименование до ротации с помощью renameOnRotate.

Если вам нужно что-то более причудливое, чем это или вращение на основе размера и количества JUL, может быть лучше установить rotatable на false и обрабатывать вращение извне для Tomcat.

person jla    schedule 21.09.2018