2012-02-09 15 views
5

Estoy tratando de configurar mi tomcat para transferir los archivos de registro una vez que se alcanza el límite de tamaño. Estoy ejecutando tomcat como un servicio de Windows y estoy redirigiendo todo mi stdout a catalina.log. Así es como lo configuraba logging.properties para establecer un límite de tamaño. Pero no está funcionando.Cómo configurar tomcat para transferir archivos catalina.log

logging.properties

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

############################################################ 
# Handler specific properties. 
# Describes specific configuration info for Handlers. 
############################################################ 

1catalina.org.apache.juli.FileHandler.level = FINE 
1catalina.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
1catalina.org.apache.juli.FileHandler.prefix = catalina. 
1catalina.org.apache.juli.FileHandler.limit = 100000 # size 100kb 
1catalina.org.apache.juli.FileHandler.count = 5 


2localhost.org.apache.juli.FileHandler.level = FINE 
2localhost.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
2localhost.org.apache.juli.FileHandler.prefix = localhost. 

3manager.org.apache.juli.FileHandler.level = FINE 
3manager.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
3manager.org.apache.juli.FileHandler.prefix = manager. 

4host-manager.org.apache.juli.FileHandler.level = FINE 
4host-manager.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
4host-manager.org.apache.juli.FileHandler.prefix = host-manager. 

java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 


############################################################ 
# Facility specific properties. 
# Provides extra control for each logger. 
############################################################ 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler 

# For example, set the com.xyz.foo logger to only log SEVERE 
# messages: 
#org.apache.catalina.startup.ContextConfig.level = FINE 
#org.apache.catalina.startup.HostConfig.level = FINE 
#org.apache.catalina.session.ManagerBase.level = FINE 
#org.apache.catalina.core.AprLifecycleListener.level=FINE 

Pero = 100000 no parece estar trabajando a 1catalina.org.apache.juli.FileHandler.limit

+0

¿Por qué incluso escribir nada en la salida estándar en una aplicación web ?! Esto va a matar tu rendimiento si recibes algún tipo de carga de la que hablar. ¿No puedes usar log4j o alguna otra biblioteca de registro? – Olaf

+0

Porque, al ejecutar tomcat como servicio, los mensajes de la consola van directamente a stdout.log. – Srinivas

+0

¿De todos modos puedo rotar stdout.log atlease – Srinivas

Respuesta

8

org.apache.juli.FileHandler no soporta la rotación en función del tamaño del archivo y hace no tiene las propiedades limit y count que está intentando establecer (see docs). En su lugar, puede usar el java.util.logging.FileHandler Java estándar que admite la rotación basada en el tamaño. Debe cambiar las siguientes líneas en su configuración:

handlers = 1catalina.java.util.logging.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

.handlers = 1catalina.java.util.logging.FileHandler, java.util.logging.ConsoleHandler 

También tenga en cuenta que Java FileHandler está configurado de forma ligeramente diferente que Tomcat FileHandler

1catalina.java.util.logging.FileHandler.level = FINEST 
1catalina.java.util.logging.FileHandler.pattern = <your log dir>/catalina%g.log 
1catalina.java.util.logging.FileHandler.limit = 100000 
1catalina.java.util.logging.FileHandler.count = 5 
1catalina.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter 

Sin embargo, no estoy seguro de que redirigir la salida estándar al archivo escrito por el registrador funcionará bien y lo ayudará a lograr lo que desea.

1

De acuerdo con la Official Tomcat 7 documentation:


clase pública se extiende FileHandler java.util.logging.Handler

Implementación de carretilla para que anexa los mensajes de registro en un archivo denominado {prefijo} {fecha} {sufijo} en un directorio configurado.

Las siguientes propiedades de configuración están disponibles:

  • - El directorio donde desee crear el archivo de registro. Si la ruta no es absoluta, es relativa al directorio de trabajo actual de la aplicación. Los archivos de configuración de Apache Tomcat generalmente especificar una ruta absoluta de esta propiedad, $ {} catalina.base/logs valor predeterminado: Registros

  • giratorio - Si es verdad, el archivo de registro se rota en la primera escritura pasada la medianoche y el nombre de archivo será {prefijo} {fecha} {sufijo}, donde la fecha es aaaa-MM-dd. Si es falso, el archivo no se rotará y el nombre del archivo será {prefijo} {sufijo}. Valor predeterminado: true

  • prefijo: la parte delantera del nombre del archivo de registro. Valor predeterminado: juli.

  • sufijo - La parte posterior del nombre del archivo de registro. Valor predeterminado: .log

  • bufferSize - Configura el almacenamiento en búfer. El valor de 0 usa el almacenamiento en búfer predeterminado del sistema (normalmente se usará un búfer de 8K). Un valor de fuerza a un escritor al ras sobre cada registro de escritura.Un valor> 0 usa un BufferedOutputStream con el valor definido, pero tenga en cuenta que también se aplicará el almacenamiento en búfer predeterminado del sistema . Valor predeterminado: -1

  • codificación - Conjunto de caracteres utilizado por el archivo de registro. Valor predeterminado: cadena vacía, lo que significa usar el conjunto de caracteres predeterminado del sistema.

  • nivel - El umbral de nivel para este Manejador. Consulte la clase java.util.logging.Level para conocer los niveles posibles. Valor predeterminado: ALL

  • filter - El nombre de la clase de implementación de java.util.logging.Filter para este controlador. Valor predeterminado: unset

  • formateador - El nombre de clase de implementación java.util.logging.Formatter para este controlador. Valor por defecto: java.util.logging.SimpleFormatter

Cuestiones relacionadas