Ich habe einen RHEL7-Server mit Apache Tomcat 7.0 installiert und nach einem kürzlich durchgeführten Update auf RHEL7.1 wurde die gesamte Protokollierung in $ {catalogina.base} /logs/catalina.out gestoppt. Ich erhalte jedoch die Protokolle in journalctl.
Wenn ich journalctl -u tomcat eingebe, erhalte ich die Protokollierung. Gibt es eine Möglichkeit für mich, die Protokollierung auch an Catalina.out zu senden?
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
quelle
quelle
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: -
Antworten:
Jamies Antwort ist richtig, dass Sie rsyslog zwingen können, zu protokollieren, was mit Tomcat los ist. Dies beantwortet jedoch nicht, warum sich Tomcat 7 auf Rhel 7 nicht bei Catalina.out anmeldet. Oder wenn ja, warum protokolliert es sowohl bei Catalina.out als auch bei einer Catalina mit einem Datum (wenn Sie keine RPM-Installation verwenden).
Erstens verwendeten die Skripte von Red Hat in der Vergangenheit um 7.0.42 Catalina.out, weil ihre Skripte das Verhalten von RHEL 6 nachahmten. Soweit mir bekannt ist, verwendeten sie "Forking" für den Dienst für
systemd
. Wenn 7.0.56 veröffentlicht wurde, änderten sie das vollständig durch neue Skripte und Wrapper macht in / usr / libexec / tomcat zu Kraft tomcat in läuftsimple
Modus stattforked
, systemd die Steuerung des PID zu haben undstdout
undstderr
das Journal zu gehen. Es ist noch einecatalina.$DATE.log
Datei vorhanden/var/log/tomcat
, aber die Informationen sind von einer normalen Datei eingeschränktercatalina.out
.Zweitens schauen wir uns /etc/tomcat/logging.properties an. Sie werden sehen, dass die Protokolle auf eine bestimmte Weise zwischen Catalina, Localhost, Manager und Host-Manager sortiert werden. Sie werden auch feststellen, dass es auch Unterstützung für rsyslog-Funktionen bietet und im Grunde genommen, wie es damit "umgeht". Worauf es ankommt, ist das
ConsoleHandler
in dieser Datei. Wenn Sie diese ändern, ändert sich das Verhalten der Anmeldungen/var/log/tomcat
.journalctl -u tomcat
zeigt Ihnen alles, was Catalina.out haben soll. Soweit mir bekannt ist, gibt es ohne Änderung der Red Hat-Wrapper in / usr / libexec / tomcat keinen sicheren Weg, um alles nur auf Catalina.out zu übertragen. Wenn Sie diese Skripte ändern und ein Update veröffentlicht wird, werden Ihre Änderungen überschrieben.Wenn Sie Catalina.out sicher wollen, gehen Sie mit Jamies rsyslog-Beispielkonfiguration. Wissen Sie nur, dass es nicht nur das ausfüllt, sondern das systemd-Journal auch die gleichen Informationen enthält.
quelle
Das Erstellen einer neuen Datei
/etc/rsyslog.d/tomcat.conf
mit den nächsten beiden Zeilen hat mir geholfen:Starten Sie anschließend Ihren rsyslog-Daemon neu:
quelle
Es scheint, dass sich die rsyslog-Syntax mit den neueren Versionen geändert hat. Mit 8.24.0 unter RHEL 7.4 funktioniert die folgende Syntax
/etc/rsyslog.d/tomcat.conf
für mich:Dann, wie Jaimie betont, war ein Neustart von rsyslog erforderlich:
quelle