Подтвердить что ты не робот

Как повернуть лог файл tomcat localhost?

Я использую tomcat 6x в системе Linux. Он ежедневно печатает файл журнала localhost, например localhost.2011-06-07, localhost.2011-06-08. Я хочу повернуть localhost, когда он достигнет 1 МБ.

Я могу повернуть файлы журналов в log4j для своих веб-приложений. Но этот файл журнала локального хоста tomcat, я не мог заставить его вращаться. Кто-нибудь получил решение, отличное от использования logrotate?

4b9b3361

Ответ 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 &quot;%r&quot; %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 &quot;%r&quot; %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.

Ответ 3

Это должно быть легко на Tomcat 7: посмотреть эти документы

атрибут renameOnRotate

По умолчанию для вращающегося журнала имя файла активного доступа будет содержат текущую временную метку в файле fileDateFormat. Во время вращения файл закрыт, и новый файл со следующей меткой времени в названии создан и используется. Если для параметра renameOnRotate присвоено значение true, метка времени больше не является частью активного имени файла журнала. Только во время вращения файл закрывается, а затем переименовывается, чтобы включить метку времени. Это подобно поведению большинства лог-фреймворков при выполнении временных вращение. Значение по умолчанию: false