J'ai un serveur RHEL7 avec Apache Tomcat 7.0 installé et après une mise à jour récente de RHEL7.1 Toutes les journalistes à $ {catalina.base} /logs/catalina.out ont été arrêtées. Cependant, je reçois les journaux à l'intérieur du journalctl.
Si je tape journalctl -u tomcat, je reçois la journalisation. Y a-t-il un moyen pour moi d'obtenir la journalisation aussi à 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)
...
La réponse de Jamie est correcte que vous pouvez forcer RSYSLOG pour vous connecter 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 à Catalina.out et à Catalina avec une date (si vous n'utilisez pas d'installation de RPM).
Premièrement, dans le passé environ 7,0,42, les scripts de Red Hat ont utilisé Catalina.out parce que leurs scripts imitant le comportement de Rhel 6. Autant que je sache, ils utilisaient "Forking" pour le service pour systemd
. Lorsque 7.0.56 a été publié, ils ont changé cela entièrement en faisant de nouveaux scripts et emballages in/usr/libexec/tomcat pour forcer Tomcat à exécuter en mode simple
au lieu de forked
, permettant à SystemD d'avoir Contrôle du PID et stdout
et stderr
pour aller au journal. Il y a encore un catalina.$DATE.log
Fichier dans /var/log/Tomcat
, mais l'information est plus limitée d'un catalina.out
.
Deuxièmement, regardons /etc/tomcat/logging.properties. Vous verrez qu'il trie les journaux de manière spécifique entre Catalina, Localhost, Manager, Host-Manager. Vous remarquerez également qu'il possède également un support de facilité RSSLOG et essentiellement comment il "traite" avec elle. Ce qu'il va, c'est le ConsoleHandler
dans ce fichier. Changer ceux qui changeraient le comportement des journaux /var/log/Tomcat
.
journalctl -u Tomcat
vous montrera tout ce que Catalina.out est censé avoir. Autant que je sache, sans modifier les emballages de Red Hat/USR/Libexec/Tomcat, il n'y a pas de chemin sûr pour que tout se passe à Catalina.out. Si vous modifiez ces scripts et une mise à jour sort, vos modifications seront écrasées.
Si vous voulez Catalina.out à coup sûr, accédez à la configuration de Jamie's Rsyslog Exemple. Sachez simplement que cela ne remplira pas seulement cela, mais le Journal Systemd aura également la même information.
Créer un nouveau fichier /etc/rsyslog.d/Tomcat.conf
contenant les deux prochaines lignes a fait le tour pour moi:
programname,contains,"server" /var/log/Tomcat/catalina.out
programname,contains,"server" ~
Ensuite, redémarrez votre démon RSYSLOG:
service rsyslog restart
Il semble que la syntaxe RSYSLOG a changé avec les versions plus récentes. Courir 8.24.0 sur Rhel 7.4, la syntaxe suivante dans /etc/rsyslog.d/Tomcat.conf
obtenu cela pour travailler pour moi:
if ($programname contains "server") then {
action(type="omfile" file="/var/log/Tomcat/catalina.out" flushOnTXEnd="off")
stop
}
Ensuite, comme le souligne Jaimie, le redémarrage de Rsyslog était nécessaire:
service rsyslog restart