Разве вы не не хотите использовать logrotate или ваш системный администратор не разрешает вам это делать?
Боюсь, учитывая это ограничение (из того, что я смог узнатьиз документации ), что не существует автоматического способа сделать то, что вы хотите (вращать файлы журналов на основе одного размера).
Если вы просто хотите остановить поведение Tomcat по умолчанию при созданииновый журнал каждый день (который я нахожу чрезвычайно раздражающим для среды разработки или сайта с низким трафиком), вы, безусловно, можете сделать это, изменив свойство fileDateFormat в журнале доступа "Valve", который на сервере Ubuntu определен в / etc / tomcat7 / server.xml .Вероятно, он находится в аналогичном месте для Tomcat 6.
Поскольку вы упоминаете ограничительного администратора системы, я понимаю, что этот сервер не находится под вашим контролем, поэтому путь не имеет значения.Если у вас есть возможность изменить конфигурацию журнала 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 МБ.
Редактировать Чтобы ответить на вопрос Дгранта, изменения были /etc/tomcat7/server.xml
и фактическая конфигурация клапана, которую я использую, такова:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
pattern="combined" rotatable="false"
prefix="access_log" />
Обратите внимание, что «комбинированный» шаблон эквивалентен (по крайней мере для Tomcat 7) явному определению шаблона в исходной конфигурации.Все это хорошо описано в моей исходной ссылке на документацию, если вы хотите узнать больше.Просто найдите раздел об атрибуте rotatable
.