Dónde configurar los archivos de registro internos de tomcat7 stdout/stderr
logging log4j (5)
Deshabilitar la creación de archivos a través de Apache "Commons Daemon Service Manager"
Versión corta : elimina el texto auto
dentro de la aplicación de servicio. Esto deshabilitará la creación de los archivos stdout y stderr. El archivo "demonio común" con el que estás atrapado, creo.
Versión larga ver abajo.
Tomcat para Windows tiene una pequeña aplicación de servicio especial. Esta aplicación tiene varios nombres. Por ejemplo: Commons Daemon Service Manager
, procrun
. Y el archivo EXE normalmente se llamará algo como Tomcat7w.exe
/ YourServiceNameHere w.exe
/ Tomcat9w.exe
.
El ícono de Windows está etiquetado como Monitor Tomcat
. Y comenzando esto te llevará directamente a la pestaña de Logging
.
Aquí hay una captura de pantalla de la pestaña "Registro". Esta aplicación puede generar varios archivos:
- El archivo de registro
commons-daemon
. - El
Pid file
. No nos importa esto ahora. - El archivo de registro de
Redirect Stdout
. - El archivo de registro
Redirect Stderror
.
Así que hay 3 archivos de registro. NINGUNO de estos se rotan por defecto. ProcRun no ofrece instalaciones para eso.
Así que hay varias soluciones que vienen a mi mente:
- Deshabilite la creación de archivos stdout / stderr (ver más abajo). TODAVÍA necesitará una forma de limpiar los viejos archivos "commons-daemon". (No conozco ninguna manera de deshabilitar la creación de esos archivos. Simplemente vaciar el campo de texto NO funcionará). Pero al menos esos deben ser pequeños.
- Reinicie periódicamente el servicio Tomcat. Esto creará un archivo marcado con la fecha actual. TODAVÍA necesitará una forma de limpiar los viejos archivos commons-daemon / stdout / stderr.
- Use una utilidad externa de Logrotate para Windows tanto para rotar el archivo actual como para limpiar los viejos archivos rotados.
- No use ProcRun e inicie su Windows Tomcat de alguna otra manera. Esto no creará ninguno de los archivos commons-daemon / stdout / stderr.
Creo que la posición oficial se puede resumir a grandes rasgos como "¿Qué? ¿Los archivos de catalina / stdout / stderr se están volviendo demasiado grandes? Bueno, no debería estar registrando nada a esos de todos modos". En otras palabras: la única opción soportada oficialmente parece ser la número 1 (y 4).
Deshabilitando la creación de stdout / stderr
En mis Tomcats, el archivo "commons-daemon" suele ser muy pequeño y solo recibe algunas líneas nuevas cuando se inicia o se cierra Tomcat. Incluso a Level: Debug
.
Los archivos stdout y stderr redirigidos pueden llegar a ser MUY grandes.
Sin embargo, puede eliminar el texto auto
de los campos de texto. Esto debería deshabilitar completamente la generación de estos archivos.
Otras lecturas
- Servicio oficial de Apache Tomcat para Windows . Para: Tomcat 7.0 , Tomcat 8.0 , Tomcat 8.5 , Tomcat 9.0
Estoy usando Tomcat 7.0.40 con log4j config de acuerdo con http://tomcat.apache.org/tomcat-7.0-doc/logging.html
Todo funciona como se espera, excepto que se crean algunos archivos de registro, que en realidad no están configurados en mi log4j.properties:
log4j.rootLogger=INFO, CATALINA
# Define all the appenders
log4j.appender.CATALINA=org.apache.log4j.RollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.log
log4j.appender.CATALINA.MaxFileSize=3MB
log4j.appender.CATALINA.MaxBackupIndex=10
log4j.appender.CATALINA.Append=true
log4j.appender.CATALINA.Encoding=UTF-8
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.LOCALHOST=org.apache.log4j.RollingFileAppender
log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.log
log4j.appender.LOCALHOST.MaxFileSize=3MB
log4j.appender.LOCALHOST.MaxBackupIndex=10
log4j.appender.LOCALHOST.Append=true
log4j.appender.LOCALHOST.Encoding=UTF-8
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.MANAGER=org.apache.log4j.RollingFileAppender
log4j.appender.MANAGER.File=${catalina.base}/logs/manager.log
log4j.appender.MANAGER.MaxFileSize=3MB
log4j.appender.MANAGER.MaxBackupIndex=10
log4j.appender.MANAGER.Append=true
log4j.appender.MANAGER.Encoding=UTF-8
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.HOST-MANAGER=org.apache.log4j.RollingFileAppender
log4j.appender.HOST-MANAGER.File=${catalina.base}/logs/host-manager.log
log4j.appender.HOST-MANAGER.MaxFileSize=3MB
log4j.appender.HOST-MANAGER.MaxBackupIndex=10
log4j.appender.HOST-MANAGER.Append=true
log4j.appender.HOST-MANAGER.Encoding=UTF-8
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=/
INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=/
INFO, HOST-MANAGER
Los archivos que se crean aunque no están en mi configuración son:
- commons-daemon.yyyy-MM-dd.log
- tomcat7-stderr.yyyy-MM-dd.log
- tomcat7-stdout.yyyy-MM-dd.log
Como se ve, utilizan un agregador de archivo rodante diario, que no se desea, ya que necesito un sistema sin mantenimiento, por lo que preferiría un proveedor de fondos rodantes que maxBackupIndex para evitar el crecimiento ilimitado de los registros.
Entonces, ¿dónde puedo configurar los registros stdout, stderr y commons-daemon? ¿Hay alguna configuración en algún lugar o puedo anular la configuración con mi propia configuración log4j? Gracias
En Windows, tendrá que ir a tomcat / bin / service.bat y editar la variable PR_LOGPATH (todas ellas). Y, probablemente, vuelva a instalar el servicio con "service remove" y "service install". La solución en sistemas Linux debe ser muy similar
Prevé que tengamos un requisito similar / enfrentemos el mismo problema algún tiempo más adelante en uno de nuestros sistemas. Así que estaba interesado en encontrar alguna solución / solución a mí mismo.
Consulté primero el demonio de los comunes para ver si hay alguna configuración que podamos hacer para lograr un maxbackupindex en los registros; Pero la búsqueda no ayudó mucho.
Sin embargo, encontré dos enfoques que las personas toman para lidiar con los "registros de tomcat que cruzan los límites".
Primer enfoque: configurar internamente en Tomcat
Encuentra
context.xml
en Tomcat en la ruta: -YourTomcatInstallDir/conf/context.xml
Edite la etiqueta de contexto para agregar
swallowOutput="true"
como a continuación:<Context swallowOutput="true">
(Esto traga todos sus stdout / stderr y redirige a su sistema de registro subyacente).
En su log4j.properties; Agregue config para redirigir sus registros de
org.apache.catalina
a su propio archivo de registro.Su registrador se verá así:
log4j.logger.org.apache.catalina=INFO, YourAppender
(En
YourAppender
ahora puede configurarMaxBackupIndex
yMaxFileSize
para lograr su número definido de reinversiones y un límite en el tamaño del registro).
Si el enfoque anterior no funciona; Puede intentar usar una utilidad externa como se menciona en el segundo enfoque
Segundo enfoque: configurar externamente con "logrotate"
Hay una herramienta simple llamada logrotate
disponible para lograr el efecto deseado en los registros sobre los que no tiene control. Aquí hay algunos enlaces para empezar.
El uso de esta herramienta es bastante sencillo y un recorrido rápido a través de estos enlaces debería proporcionarle lo que necesita.
Tuve el mismo problema y finalmente encontré la solución. Tomcat 7 para Windows tiene una aplicación de propiedades de Tomcat llamada Monitor Tomcat. En la pestaña de registro, debe eliminar el valor "automático" en los cuadros de entrada de redirección stdout y stderr. Solo déjalo en blanco y no creará esos archivos. Luego, puede usar log4j para crear archivos de registro móvil para esos archivos críticos para futuros propósitos de depuración.
Espero que ayude.
Para aquellos que solo desean personalizar la ubicación donde se crean estos 3 registros: si ejecuta Tomcat como un servicio y desea personalizar el lugar donde residen el demonio común, el stderror y la salida estándar, puede iniciar su servicio con el parámetro de línea de comando - LogPath o establezca en la máquina del servidor una variable de entorno PR_LOGPATH con su ruta personalizada.
Esto se documenta también aquí junto con otros parámetros: https://tomcat.apache.org/tomcat-8.0-doc/windows-service-howto.html