tomcat logging log4j tomcat7

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:

  1. El archivo de registro commons-daemon .
  2. El Pid file . No nos importa esto ahora.
  3. El archivo de registro de Redirect Stdout .
  4. 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:

  1. 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.
  2. 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.
  3. Use una utilidad externa de Logrotate para Windows tanto para rotar el archivo actual como para limpiar los viejos archivos rotados.
  4. 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

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

  1. Encuentra context.xml en Tomcat en la ruta: -

    YourTomcatInstallDir/conf/context.xml

  2. 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).

  3. 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 configurar MaxBackupIndex y MaxFileSize 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