Todas las aplicaciones y sistemas son potencialmente vulnerables a fallos
o comportamientos inesperados.
El problema muchas veces reside
en determinar la causa de estos comportamientos,
y el daño causado a la información del sistema.
Las bitácoras realizan un registro de eventos importantes de la aplicación.
Esto permite realizar una realimentación y detección de anomalías
en caso de una falla del sistema, un ataque u otra situación no deseada.
En este artículo mostraremos cómo configurar apropiadamente
las bitácoras en GlassFish,
así como la forma de definir, establecer, listar y configurar eventos.
Para ello debemos seguir el siguiente procedimiento:
-
Cambiar el nombre y la ubicación de las bitácoras,
Para realizar esto, primero utilizamos el comando list-log-attributes
para ver la configuración actual.
-
Después debemos utilizar el comando set-log-attributes
para especificar el nuevo nombre o ubicación.
De manera predeterminada
este cambio se realiza en el Servidor de Administración del Dominio (DAS).
Sin embargo, también se puede especificar si se desea hacer el cambio
en una instancia o cluster.
-
El siguiente ejemplo establece el nombre del archivo de bitácora
de Cluster1 a cluster1.log.
Cluster1 tiene dos instancias de servidor:
ClusterServer1 y ClusterServer2.
cluster1.log
asadmin> list-log-attributes Cluster1
com.sun.enterprise.server.logging.GFFileHandler.alarms <false>
com.sun.enterprise.server.logging.GFFileHandler.file
<${com.sun.aas.instanceRoot}/logs/server.log>
com.sun.enterprise.server.logging.GFFileHandler.flushFrequency
.
.
.
log4j.logger.org.hibernate.validator.util.Version <warn>
Command list-log-attributes executed successfully.
asadmin> set-log-attributes --target Cluster1
com.sun.enterprise.server.logging.GFFileHandler.file=
${com.sun.aas.instanceRoot}/logs/cluster1.log
com.sun.enterprise.server.logging.GFFileHandler.file
logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
These logging attributes are set for Cluster1.
ClusterServer1 :
com.sun.enterprise.server.logging.GFFileHandler.file
logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
These logging attributes are set for Cluster1.
ClusterServer2 :
com.sun.enterprise.server.logging.GFFileHandler.file
logging attribute set with value ${com.sun.aas.instanceRoot}/logs/cluster1.log
These logging attributes are set for Cluster1.
Command set-log-attributes executed successfully.
-
Posteriormente, debemos listar los niveles de bitácora.
GlassFish permite listar todos los loggers y sus niveles registrados.
Al utilizar el comando list-log-levels podemos listar los módulos
y sus niveles de bitácora actual.
El siguiente ejemplo muestra una lista parcial de los loggers y sus niveles:
asadmin> list-log-levels
javax.enterprise.system.container.cmp <INFO>
javax.enterprise.system.tools.admin <INFO>
java.util.logging.ConsoleHandler <FINEST>
javax.enterprise.system.container.web <INFO>
javax.enterprise.system.util <INFO>
javax.enterprise.resource.webcontainer.jsf.timing <INFO>
javax <INFO>
javax.enterprise.resource.corba <INFO>
...
Command list-log-levels executed successfully.
Es posible especificar como parámetro si se desea un servidor o instancia.
-
Finalmente debemos configurar el nivel de bitácora global.
El nivel de bitácora global especifica qué eventos
son guardados en las bitácoras.
El nivel predeterminado es INFO (el cual incluye SEVERE y WARNING).
Use el comando set-log-levels para especificar el nivel
del logger java.util.logging.ConsoleHandler,
esto cambiará el nivel global.
El siguiente ejemplo configura el nivel en INFO:
asadmin> set-log-levels java.util.logging.ConsoleHandler=INFO
java.util.logging.ConsoleHandler package set with log level INFO.
These logging levels are set for server.
Command set-log-levels executed successfully.