Ответ 1
Вы не хотите использовать logrotate, или ваш администратор sys не позволяет вам?
Учитывая это ограничение, я боюсь (из того, что я смог узнать из документации), что нет автоматического способа сделайте то, что вы хотите (вращайте файлы журналов на основе только размера).
Если вы просто хотите остановить поведение Tomcat по умолчанию при создании нового журнала каждый день (что я нахожу крайне раздражающим для среды разработки или сайта с низким трафиком), вы можете это сделать, изменив fileDateFormat свойства журнала доступа "Valve", который на сервере Ubuntu определен в /etc/tomcat7/server.xml. Вероятно, в аналогичном месте для Tomcat 6.
Поскольку вы упоминаете ограничительный администратор sys, я понимаю, что этот сервер не находится под вашим контролем, поэтому этот путь не имеет значения. Если у вас есть возможность изменять конфигурацию журнала Tomcat, надеюсь, вы знаете, где найти соответствующий файл.
В этом .xml файле найдите объект Valve с className, установленным в "org.apache.catalina.valves.AccessLogValve" в разделе, в котором настраивается движок "Catalina" для соответствующего хоста для вашего сайта (localhost в моем случае). Хотя в документации Tomcat 6 это не упоминается, можно сделать вывод, что файл fileDateFormat по умолчанию "yyyy-MM-dd". Включение дня в имя файла журнала сообщает Tomcat (по смыслу), что вы также хотите, чтобы журнал поворачивался каждый день. Если вы хотите, чтобы он был повернут, скажем, только один раз в месяц, просто измените fileDateFormat на "yyyy-MM".
На моем сервере определение параметра Logging Valve по умолчанию:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
Чтобы изменить это на ежемесячное вращение журнала, я бы просто добавил соответствующий атрибут fileDateFormat
:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
fileDateFormat="yyyy-MM" prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
Так как я умею (и желаю) использовать logrotate, я полностью отключил встроенное ведение журнала Tomcat и имена файлов на основе даты и просто использовал logrotate для поворота журналов всякий раз, когда журнал достигает 1 МБ.
Изменить. Чтобы ответить на вопрос dgrant, изменения были /etc/tomcat7/server.xml
, и фактическая конфигурация клапана, которую я использую, такова:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
pattern="combined" rotatable="false"
prefix="access_log" />
Обратите внимание, что "комбинированный" шаблон эквивалентен (по крайней мере, для Tomcat 7) определению явного шаблона в исходной конфигурации. Все это хорошо описано в моей исходной документации, если вы хотите прочитать больше. Просто найдите раздел атрибута rotatable
.