Как настроить Tomcat для файлов rollover catalina.log
Я пытаюсь настроить свой tomcat для переноса файлов журнала после достижения предела размера. Я использую tomcat в качестве службы Windows и перенаправляю весь свой стандартный вывод на catalina.log. Вот как я настроил logging.properties, чтобы установить ограничение размера. Но это не работает.
logging.properties
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.limit = 100000 # size 100kb
1catalina.org.apache.juli.FileHandler.count = 5
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001
2localhost.org.apache.juli.FileHandler.prefix = localhost.
3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001
3manager.org.apache.juli.FileHandler.prefix = manager.
4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler
# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
#org.apache.catalina.startup.ContextConfig.level = FINE
#org.apache.catalina.startup.HostConfig.level = FINE
#org.apache.catalina.session.ManagerBase.level = FINE
#org.apache.catalina.core.AprLifecycleListener.level=FINE
Но 1catalina.org.apache.juli.FileHandler.limit = 100000 не работает
2 ответа
org.apache.juli.FileHandler
не поддерживает ротацию в зависимости от размера файла и не имеет limit
а также count
свойства, которые вы пытаетесь установить ( см. документы). Вместо этого вы можете использовать стандартный Java java.util.logging.FileHandler, который поддерживает ротацию по размеру. Вы должны изменить следующие строки в вашей конфигурации:
handlers = 1catalina.java.util.logging.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.java.util.logging.FileHandler, java.util.logging.ConsoleHandler
Также обратите внимание, что Java FileHandler
настроен немного иначе, чем Tomcat FileHandler
1catalina.java.util.logging.FileHandler.level = FINEST
1catalina.java.util.logging.FileHandler.pattern = <your log dir>/catalina%g.log
1catalina.java.util.logging.FileHandler.limit = 100000
1catalina.java.util.logging.FileHandler.count = 5
1catalina.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
Однако я не уверен, что перенаправление стандарта в файл, записанный регистратором, будет работать хорошо и поможет вам достичь того, что вы хотите.
Согласно официальной документации Tomcat 7:
открытый класс FileHandler расширяет java.util.logging.Handler
Реализация обработчика, который добавляет сообщения журнала в файл с именем {prefix}{date}{суффикс} в настроенном каталоге.
Доступны следующие свойства конфигурации:
каталог - каталог, в котором создается файл журнала. Если путь не абсолютный, он относится к текущему рабочему каталогу приложения. Конфигурационные файлы Apache Tomcat обычно указывают абсолютный путь для этого свойства, ${catalina.base}/logs Значение по умолчанию: logs
Поворотный - если true, файл журнала будет повернут при первой записи после полуночи, и имя файла будет {префикс} {дата} {суффикс}, где дата - гггг-ММ-дд. Если false, файл не будет повернут, и имя файла будет {префикс} {суффикс}. Значение по умолчанию: true
префикс - ведущая часть имени файла журнала. Значение по умолчанию: джули.
суффикс - завершающая часть имени файла журнала. Значение по умолчанию:.log
bufferSize - Настраивает буферизацию. Значение 0 использует системную буферизацию по умолчанию (обычно используется буфер 8 КБ). Значение <0 заставляет писателя сбрасываться при каждой записи журнала. Значение>0 использует BufferedOutputStream с заданным значением, но обратите внимание, что системная буферизация по умолчанию также будет применяться. Значение по умолчанию: -1
кодировка - набор символов, используемый файлом журнала. Значение по умолчанию: пустая строка, что означает использование системного набора символов по умолчанию.
уровень - порог уровня для этого обработчика. См. Класс java.util.logging.Level для возможных уровней. Значение по умолчанию: ВСЕ
filter - имя класса реализации java.util.logging.Filter для этого обработчика. Значение по умолчанию: не установлено
formatter - имя класса реализации java.util.logging.Formatter для этого обработчика. Значение по умолчанию: java.util.logging.SimpleFormatter