J'ai un serveur RHEL7 avec Apache Tomcat 7.0 installé et après une récente mise à jour de RHEL7.1, toute la journalisation dans $ {catalina.base} /logs/catalina.out a été arrêtée. Cependant, je reçois les journaux dans journalctl.
Si je tape journalctl -u tomcat, j'obtiens la journalisation. Existe-t-il un moyen pour moi de me connecter également à 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
la source
la source
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: -
Réponses:
La réponse de Jamie est correcte: vous pouvez forcer rsyslog à enregistrer ce qui se passe avec tomcat. Cependant, cela ne répond pas pourquoi tomcat 7 sur rhel 7 ne se connecte pas à catalina.out. Ou si c'est le cas, pourquoi se connecte-t-il à la fois à catalina.out et à un catalina avec une date (si vous n'utilisez pas une installation RPM).
Premièrement, dans le passé vers 7.0.42, les scripts de Red Hat utilisaient catalina.out parce que leurs scripts imitaient le comportement de RHEL 6. Pour autant que je sache, ils utilisaient "forking" pour le service pour
systemd
. Lorsque la version 7.0.56 a été publiée, ils ont complètement changé cela en créant de nouveaux scripts et wrappers dans / usr / libexec / tomcat pour forcer tomcat à s'exécuter ensimple
mode au lieu deforked
, permettant à systemd d'avoir le contrôle du PIDstdout
etstderr
d'aller au journal. Il y a toujours uncatalina.$DATE.log
fichier/var/log/tomcat
, mais les informations sont plus limitées que d'habitudecatalina.out
.Deuxièmement, regardons /etc/tomcat/logging.properties. Vous verrez qu'il trie les journaux d'une manière spécifique entre catalina, localhost, manager, host-manager. Vous remarquerez également qu'il prend également en charge la fonction rsyslog, et essentiellement comment il "le gère". Ce qu'il en est, c'est
ConsoleHandler
dans ce fichier. La modification de ceux-ci modifierait le comportement des connexions/var/log/tomcat
.journalctl -u tomcat
vous montrera tout ce que catalina.out est censé avoir. Pour autant que je sache, sans modifier les wrappers de Red Hat dans / usr / libexec / tomcat, il n'y a pas de moyen sûr de faire en sorte que tout aille juste à catalina.out. Si vous modifiez ces scripts et qu'une mise à jour sort, vos modifications seront écrasées.Si vous voulez certainement catalina.out, allez avec l'exemple de configuration rsyslog de Jamie. Sachez simplement que cela remplira non seulement cela, mais le journal systemd aura également les mêmes informations.
la source
La création d'un nouveau fichier
/etc/rsyslog.d/tomcat.conf
contenant les deux lignes suivantes a fait l'affaire pour moi:Redémarrez ensuite votre démon rsyslog:
la source
Il semble que la syntaxe rsyslog ait changé avec les versions plus récentes. En exécutant 8.24.0 sur RHEL 7.4, la syntaxe suivante le
/etc/rsyslog.d/tomcat.conf
fait fonctionner pour moi:Ensuite, comme Jaimie le souligne, le redémarrage de rsyslog était nécessaire:
la source