У меня есть сервер RHEL7 с установленным Apache Tomcat 7.0, и после недавнего обновления до RHEL7.1 вся запись в $ {catalina.base} /logs/catalina.out была остановлена. Однако я получаю журналы внутри journalctl.
Если я набираю journalctl -u tomcat, я получаю логирование. Есть ли способ для меня, чтобы получить регистрацию также в catalina.out?
cat /usr/share/tomcat/logs/catalina.out
no output
journalctl -u tomcat
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
Aug 20 10:07:14 server.example.com server[26435]: at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
...
rhel
rsyslog
tomcat
systemd-journald
xterrez
источник
источник
jinfo -sysprops 26435 | grep catalina.base catalina.base = /usr/share/tomcat
stat /usr/share/tomcat/logs/catalina.out
stat /usr/share/tomcat/logs/catalina.out File: ‘/usr/share/tomcat/logs/catalina.out’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 1013845 Links: 1 Access: (0660/-rw-rw----) Uid: ( 91/ tomcat) Gid: ( 91/ tomcat) Access: 2015-08-19 11:21:32.835211998 +0000 Modify: 2015-08-17 03:40:02.785809293 +0000 Change: 2015-08-17 03:40:02.785809293 +0000 Birth: -
Ответы:
Ответ Джейми верен: вы можете заставить rsyslog регистрировать события, происходящие с tomcat. Однако это не отвечает, почему tomcat 7 на rhel 7 не входит в catalina.out. Или, если это так, почему он регистрируется как в catalina.out, так и в catalina с датой (если вы не используете установку RPM).
Во-первых, в прошлом, около 7.0.42, скрипты Red Hat использовали catalina.out, потому что их скрипты имитировали поведение RHEL 6. Насколько мне известно, они использовали «разветвление» для сервиса
systemd
. Когда 7.0.56 был освобожден, они изменили , что полностью, делая новые сценарии и упаковщик в / USR / libexec / TOMCAT в силу кота работать вsimple
режиме вместоforked
, позволяя Systemd , чтобы иметь контроль над PID иstdout
иstderr
идти в журнал.catalina.$DATE.log
Файл все еще есть/var/log/tomcat
, но информация более ограничена, чем обычноcatalina.out
.Во-вторых, давайте посмотрим на /etc/tomcat/logging.properties. Вы увидите, что он сортирует журналы определенным образом между catalina, localhost, manager, host-manager. Вы также заметите, что у него есть поддержка rsyslog, и в основном, как он «справляется» с этим. То, к чему это сводится, находится
ConsoleHandler
в этом файле. Изменение тех из них изменило бы поведение входов в систему/var/log/tomcat
.journalctl -u tomcat
покажет вам все, что должен иметь catalina.out. Насколько я знаю, без изменения оболочек Red Hat в / usr / libexec / tomcat, нет верного пути к тому, чтобы все пошло только в catalina.out. Если вы измените эти сценарии и появится обновление, ваши изменения будут перезаписаны.Если вам нужен catalina.out, используйте конфигурацию примера rsyslog Джейми. Просто знайте, что он не только заполнит это, но и журнал systemd будет иметь ту же информацию.
источник
Создание нового файла,
/etc/rsyslog.d/tomcat.conf
содержащего следующие две строки, помогло мне:Затем перезапустите ваш демон rsyslog:
источник
Кажется, синтаксис rsyslog изменился с более новыми версиями. Запуск 8.24.0 на RHEL 7.4, следующий синтаксис
/etc/rsyslog.d/tomcat.conf
заставил его работать на меня:Затем, как указывает Джейми, необходим перезапуск rsyslog:
источник