Tomcat 7 no produce salida de registro a catalina.out en RHEL7

9

Tengo un servidor RHEL7 con Apache Tomcat 7.0 instalado y, después de una actualización reciente a RHEL7.1, se detuvo todo el registro en $ {catalina.base} /logs/catalina.out. Sin embargo, estoy recibiendo los registros dentro de journalctl.

Si escribo journalctl -u tomcat, obtengo el registro. ¿Hay alguna forma de que yo también logre iniciar sesión en 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)
...
xterrez
fuente
¿Ha verificado que la variable "catalina.base" esté configurada correctamente?
VGe0rge
Sí, el catalina.base está configurado correctamente. jinfo -sysprops 26435 | grep catalina.base catalina.base = /usr/share/tomcat
xterrez
Podría intentar ver si el archivo se abre en absoluto mediante el proceso tomcat. Intenta hacerlostat /usr/share/tomcat/logs/catalina.out
VGe0rge
No, ese proceso de tomcat no está utilizando el archivo 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: -
xterrez
Ok, intente agregar la ruta absoluta en el archivo conf de tomcat y reinicie el servicio. Luego vuelva a intentar los comandos de estadísticas para ver los resultados.
VGe0rge

Respuestas:

10

La respuesta de Jamie es correcta: puede forzar a rsyslog a registrar lo que está sucediendo con tomcat. Sin embargo, eso no responde por qué tomcat 7 en rhel 7 no inicia sesión en catalina.out. O si lo hace, ¿por qué inicia sesión tanto en catalina.out como en catalina con una fecha (si no está utilizando una instalación RPM)?

Primero, en el pasado alrededor de 7.0.42, los scripts de Red Hat usaban catalina.out porque sus scripts imitaban el comportamiento de RHEL 6. Hasta donde yo sé, estaban usando "bifurcación" para el servicio systemd. Cuando 7.0.56 fue puesto en libertad, que cambiaron por completo al hacer nuevos guiones y envoltorios en / usr / libexec / Tomcat Tomcat a la fuerza para funcionar en simpleel modo en lugar de forked, permitiendo systemd a tener el control del PID y stdoute stderrir a la revista. Todavía hay un catalina.$DATE.logarchivo /var/log/tomcat, pero la información es más limitada de lo normal catalina.out.

En segundo lugar, echemos un vistazo a /etc/tomcat/logging.properties. Verá que clasifica los registros de una manera específica entre catalina, localhost, manager, host-manager. También notará que también tiene soporte para la instalación de rsyslog, y básicamente cómo "trata" con él. Lo que se reduce a es ConsoleHandleren ese archivo. Cambiarlos cambiaría el comportamiento de los registros /var/log/tomcat.

journalctl -u tomcatte mostrará todo lo que catalina.out se supone que tiene. Hasta donde sé, sin modificar los envoltorios de Red Hat en / usr / libexec / tomcat, no hay una forma segura de hacer que todo vaya solo a catalina.out. Si modifica esos scripts y sale una actualización, se sobrescribirán sus cambios.

Si quieres catalina.out seguro, ve con la configuración de ejemplo rsyslog de Jamie. Solo sepa que no solo completará eso, sino que el diario systemd también tendrá la misma información.

Sokel
fuente
¡Buena respuesta! Me tiene pensando en hacer cambios incompatibles entre los lanzamientos de Tomcat ...: |
Rade_303
6

Crear un nuevo archivo que /etc/rsyslog.d/tomcat.confcontenga las siguientes dos líneas me sirvió:

programname,contains,"server" /var/log/tomcat/catalina.out
programname,contains,"server" ~

Luego reinicie su demonio rsyslog:

service rsyslog restart
Jamie De Palmenaer
fuente
0

Parece que la sintaxis de rsyslog cambió con las versiones más nuevas. Ejecutando 8.24.0 en RHEL 7.4, la siguiente sintaxis /etc/rsyslog.d/tomcat.confme funcionó:

if ($programname contains "server") then {
    action(type="omfile" file="/var/log/tomcat/catalina.out" flushOnTXEnd="off")
    stop
}

Luego, como Jaimie señala, se necesitaba reiniciar rsyslog:

service rsyslog restart
Boyko
fuente