Имам проблем с пространството, така че трябва да огранича размера на catalina.out до 10M и да огранича броя на ролките до 3 предишни дни. Възможно ли е само с конфигуриране на logging.properties? Благодаря.
Как да задам максимален брой ролки и максимален размер на журнала за tomcat?
Отговори (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 байта (1MB) и максимално прехвърляне до 3 изходни регистрационни файла. Можете да се обърнете към Javadoc на java.util.logging .FileHandler за подробности относно конфигурацията.
Трябва да внедрите файловия манипулатор, ако искате да поддържате ежедневна ротация с помощта на JUL. Намерих персонализирано внедряване от този блог. Все още не съм го пробвал. Можете да го препоръчате, ако имате интерес.
От най-малко Tomcat 5.5 "вътрешното регистриране за Apache Tomcat използва JULI, пакетиран преименуван разклонител на Apache Commons Logging, който е твърдо кодиран да използва рамката java.util.logging (JUL)."
Последните версии на JULI и Access Log Valve по подразбиране използват формат за дата ГГГГ-ММ-дд. Регистрационните файлове juli.FileHandler се наричат {prefix}{date}{suffix}, където датата е yyyy-MM-dd, ако rotatable е true (по подразбиране). Ако е невярно, датата се изпуска и Tomcat няма да обработва ротацията на файла. Има и параметър maxDays за ограничаване на броя на тези ротирани журнали на Tomcat, които ще се съхраняват. Можете например да зададете това на 3 и да имате съхранявани регистрационни файлове само за три дни.
Access Log Valve е по-конфигурируем. Например, той ви позволява да посочите fileDateFormat от стандартния yyyy-MM-dd, така че можете да добавите HH за ротация на всеки час или просто да ротирате ежемесечно. Можете също да изберете да отложите форматираното именуване до завъртане с renameOnRotate.
Ако имате нужда от нещо по-красиво от това или въртенето, базирано на размера и броя на JUL, може би е най-добре да зададете rotatable на false и да обработвате въртенето външно за Tomcat.
- https://tomcat.apache.org/tomcat-8.5-doc/logging.html
- https://tomcat.apache.org/tomcat-8.5-doc/api/org/apache/juli/FileHandler.html
- https://tomcat.apache.org/tomcat-8.5-doc/config/valve.html