[Quick-Tip] Configurar la rotación de logs de Glassfish 3.x

Un problema muy común de la generación de logs con las utilidades propias de la maquina virtual de Java (la que utiliza Glassfish) es la política de rotación de logs, Glassfish 2.1 por ejemplo no tiene ningún valor configurado y por tanto nunca efectuá rotación de logs llegando a saturar los discos duros con logs interminables.

¿Solución?

En versiones anteriores de Glassfish Open Source la solución era configurar directamente el parametro en la maquina virtual como muestra el siguiente tutorial (en ingles): http://ihategeek.wordpress.com/2011/05/28/glassfish-set-maximum-server-log-files-rotation/

En nuevas versiones de Glassfish es posible configurar nuestra instancia con el comando de administración de Glassfish asadmin parametrizandolo para alterar las configuraciones en las politicas de logs, el unico requisito es que la instancia se encuentre en ejecución.

Por ejemplo en una instalación nueva de Glassfish podemos ver estos atributos con el comando

1
asadmin list-log-attributes

Con el cual obtendríamos el siguiente resultado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
com.sun.enterprise.server.logging.GFFileHandler.file	<${com.sun.aas.instanceRoot}/logs/server.log>
com.sun.enterprise.server.logging.GFFileHandler.flushFrequency	<1>
com.sun.enterprise.server.logging.GFFileHandler.formatter	<com.sun.enterprise.server.logging.UniformLogFormatter>
com.sun.enterprise.server.logging.GFFileHandler.logFormatDateFormat	<yyyy-MM-dd'T'HH:mm:ss.SSSZ>
com.sun.enterprise.server.logging.GFFileHandler.logtoConsole	<false>
com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles	<0>
com.sun.enterprise.server.logging.GFFileHandler.retainErrorsStasticsForHours	<0>
com.sun.enterprise.server.logging.GFFileHandler.rotationLimitInBytes	<2000000>
com.sun.enterprise.server.logging.GFFileHandler.rotationOnDateChange	<false>
com.sun.enterprise.server.logging.GFFileHandler.rotationTimelimitInMinutes	<0>
com.sun.enterprise.server.logging.SyslogHandler.useSystemLogging	<false>
handlers	<java.util.logging.ConsoleHandler>
java.util.logging.ConsoleHandler.formatter	<com.sun.enterprise.server.logging.UniformLogFormatter>
java.util.logging.FileHandler.count	<1>
java.util.logging.FileHandler.formatter	<java.util.logging.XMLFormatter>
java.util.logging.FileHandler.limit	<50000>
java.util.logging.FileHandler.pattern	<%h/java%u.log>
log4j.logger.org.hibernate.validator.util.Version	<warn>
Comando list-log-attributes executado com êxito.

El valor que nos interesa es

1
com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles

El valor por defecto de este parametro es 0 lo cual es equivalente a que los logs se van a retener de manera indeterminada y por tanto llenar el disco.

Para alterarlo podemos ejecutar el siguiente comando (por ejemplo para retener hasta 100 archivos de logs)

1
asadmin set-log-attributes com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=100

Y obtendremos la salida

1
2
3
com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles logging attribute set with value 10.
These logging attributes are set for server.
Comando set-log-attributes executado com êxito

3 Replies to “[Quick-Tip] Configurar la rotación de logs de Glassfish 3.x”

  1. Usando Unknown Unknown en Unknown Unknown

    Hola @Juan Carlos, los archivos retenidos anteriormente deben eliminarse manualmente, sin embargo todos los logs que se generen posterior a la configuracion seran configurados automaticamente.

    Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *