logrotate не вращается catalina.out
Я пытаюсь использовать logrotate, чтобы автоматически выключать tomcat's catalina.out ежедневно, хотя я могу вручную вызвать logrotate, и он работает нормально. Я использую, я попробовал каждое решение там, но я не могу заставить его вращаться. Я на Oracle Linux 7.5, который в основном RHEL 7.
Вот шаги, которые я предпринял:
Я создал файл /etc/logrotate.d/tomee.conf, который выглядит следующим образом:
/apache-tomee-plus-7.0.4/logs/catalina.out
{
su opc opc
daily
rotate 7
compress
notifempty
missingok
copytruncate
}
Я могу вручную выполнить logrotate, и он отлично работает, используя sudo /usr/sbin/logrotate /etc/logrotate.conf
Я также пытаюсь отладить с помощью sudo /usr/sbin/logrotate -d /etc/logrotate.conf
и на выходе нет ошибок
...
rotating pattern: /apache-tomee-plus-7.0.4/logs/catalina.out
after 1 days (7 rotations)
empty log files are not rotated, old logs are removed
switching euid to 1000 and egid to 1000
considering log /apache-tomee-plus-7.0.4/logs/catalina.out
log needs rotating
rotating log /apache-tomee-plus-7.0.4/logs/catalina.out, log->rotateCount is 7
dateext suffix '-20181211'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
copying /apache-tomee-plus-7.0.4/logs/catalina.out to /apache-tomee-plus-7.0.4/logs/catalina.out-20181211
truncating /apache-tomee-plus-7.0.4/logs/catalina.out
compressing log with: /bin/gzip
switching euid to 0 and egid to 0
...
Но это все еще не делает это автоматически ежедневно.
Я также знаю, что Logrotate работает, потому что в соответствии с /var/lib/logrotate/logrotate.status
, другие журналы вращаются, но не catalina.out
cat /var/lib/logrotate/logrotate.status
logrotate state -- version 2
"/var/log/yum.log" 2018-11-29-18:44:14
"/var/log/up2date" 2018-9-17-19:0:0
"/apache-tomee-plus-7.0.4/logs/catalina.out" 2018-12-8-0:37:14
"/var/log/chrony/*.log" 2018-9-17-19:0:0
"/var/log/wtmp" 2018-12-3-17:48:49
"/var/log/spooler" 2018-11-29-18:44:14
"/var/log/btmp" 2018-12-3-17:48:49
"/var/log/iscsiuio.log" 2018-9-17-19:0:0
"/var/log/maillog" 2018-12-11-3:7:1
"/var/log/secure" 2018-12-11-3:7:1
"/var/log/messages" 2018-12-11-3:7:1
"/var/account/pacct" 2018-9-17-19:0:0
"/var/log/cron" 2018-12-11-3:7:1
обратите внимание, что есть несколько записей, в которых говорится, что он был повернут 12-11, но catalina.out не вращался с 12-8, но он все еще не вращается.
Любая помощь с благодарностью. Благодарю.
4 ответа
Это старый случай, я это вижу, но я чувствовал, что должен добавить свое решение, поскольку оно меняет журналы, что было исходным вопросом.
В моем случае я настроил файл /etc/logrotate.d/tomcat более или менее так же, как это сделал Джастин в первоначальном вопросе:
/<apache-location>/tomcat/logs/catalina.out {
daily
copytruncate
rotate 180
compress
missingok
maxsize 200M
}
(у меня странное расположение apache, поэтому замените его соответствующим образом. rotate 180
хранит мои журналы около 30 дней, если моя математика не так уж и далека (24 часа * 30 дней = 720 часов -> при ротации каждые 4 часа, это дает 720 / 4 = 180 раз -> сохранить 180 файлов журнала).)
но я запускаю выполнение из обычного задания cron, как такового:
0 */4 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /var/log/cut.log 2>&1
Для ежедневной ротации просто настройте первую часть cronjob, например, 0 0 * * *
(полночь каждый день).
Параметры -vf позволяют включить подробный отчет (для ведения журнала cron) и принудительно выполнить ротацию. /Var/log/cut.log - это файл, который я добавил специально для ведения журнала задания cron. В>> /var/log/cut.log 2>&1
можно, конечно, отбросить.
Я выполняю ротацию /cron как пользователь root.
Кажется, это работает в моих системах после того, как у меня изначально было много проблем. Не уверен, что это идеальное решение, но, по крайней мере, я избегалcatalina.out
растет в небеса и выше, что было моей главной целью, и я подозреваю также цель с исходным вопросом...
Поскольку это набирает много просмотров, я дам вам знать решение, которое я нашел.
Мне не удалось заставить logrotate работать на catalina.out, извините, если это то, что вы ищете.
Что мне удалось сделать, так это остановить создание catalina.out. Для этого я создал файл с именем setenv.sh в apache-tomee-plus-7.0.4/bin и поместил в него эту строку
export CATALINA_OUT="/dev/null"
Когда tomee запускается, он выглядит примерно так в catalina.sh
eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-classpath "\"$CLASSPATH\"" \
-Djava.security.manager \
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
поэтому вывод в файл кажется необходимым для запуска этого фолианта в фоновом режиме. вывод в /dev/null позволяет выводить куда-нибудь, но никуда не идет
это легко с
rotatelogs
от Апача. Просто установленное свойство env:
CATALINA_OUT_CMD="/usr/sbin/rotatelogs -f $CATALINA_BASE/logs/catalina.out.%Y-%m-%d.log 86400"
Он создаст именованный канал catalina.out, чтобы его можно было вращать без перезапуска Tomcat.
Для получения дополнительной информации см. файл catalina.sh.
Из вывода logrotate.status видно, что catalina.out не контролируется logrotate.
В файле /etc/logrotate.conf проверьте наличие строки
include /etc/logrotate.d
Если этой строки нет, добавьте ее. Только если эта строка присутствует, конфигурации, добавленные в /etc/logrotate.d, будут учитываться.