lunes, 21 de mayo de 2012

Utilizando el log en Gradle

Hemos visto que los ficheros de gestión de proyecto de gradle no son más que código, con lo que podemos sacar notificaciones por consola utilizando la sentencia println:

println sourceSets.main.java.srcDirs

Como ya hemos visto en un post sobre java, utilizar la sentencia println para mostrar mensajes de estado por consola (o fichero) no nos proporciona mucha flexibilidad, por tanto una buena política es la de usar un framework que nos permita elegir la granularidad de los mensajes de log.

Con gradle podemos tener distintos niveles de log, utiliza SLF4J, y así podemos diferenciar los mensajes que queremos ver cuando se realiza la construcción de nuestro proyecto de aquellos que se mostrarán cuando estramos preparando el build.gradle y algo no funciona exactamente como deseamos.

Los niveles de log con que contamos son:

  • ERROR Muestra los mensajes de error.
  • QUIET  Nivel específico de Gradle, no muestra mensajes. Si ejecutamos gradle en este nivel (opción –q al ejecutar), sólo se mostraran mensajes configurados para este nivel. Es el nivel más “silencioso”
  • WARNING Muestra los mensajes de advertencia
  • LIFECYCLE Nivel específico de Gradle, habitualmente son los mensajes de gradle respecto al proceso de construcción. Si ejecutamos gradle es el nivel por defecto.
  • INFO Muestra los mensajes de información
  • DEBUG Muestra los mensajes de depuración

Cambio de nivel de log en la línea de comandos

Cuando ejecutamos gradle podemos elegir en qué nivel de log se va a realizar la ejecución.

Las opciones a nivel de línea de comandos son:

  • <defecto> Si no configuramos ninguna opción se mostrarán los niveles LIFECYCLE y superiores, esto es ERROR, QUIET, WARNING y LIFECYCLE.
  • -q Se mostrarán los niveles QUIET y superior.
  • -i Se mostrarán los niveles INFO y superior.
  • -d Se mostrarán los niveles DEBUG y superior, con lo que cualquier mensaje de log saldrá por consola.

Escribiendo mensajes de log

Como vimos podemos escribir en el fichero build.gradle:

println ‘Texto de log con println’

Usando la propiedad logger de cualquier script de construcción de proyectos (build.gradle) podemos codificar en qué nivel queremos que salgan los mensajes:


logger.quiet("Mensaje que siempre se muestra")
logger.error("Mensaje de nivel ERROR")
logger.warn("Mensaje de nivel WARNING")
logger.lifecycle("Mensaje de nivel LIFECYCLE")
logger.info("Mensaje de nivel INFO")
logger.debug("Mensaje de nivel DEBUG")

Si tecleamos gradle en la línea de comandos podemos ver:

>gradle
Mensaje que siempre se muestra
Mensaje de nivel ERROR
Mensaje de nivel WARNING
Mensaje de nivel LIFECYCLE
:help

Welcome to Gradle 1.0-rc-3.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

BUILD SUCCESSFUL
Total time: 5.266 secs


Si queremos ver todos los mensajes de log tecleamos gradle –d
                  
El resultado es un tanto extenso, por eso no lo muestro.


Creando nuestro propio logger

Hemos visto que podemos utilizar la propiedad logger para mostrar nuestros mensajes de notificación, pero como nuestros ficheros de configuración de proyecto son código, podemos crear nuestro propio logger. De esta forma creamos un fichero build.gradle de la siguiente forma:


import org.slf4j.Logger
import org.slf4j.LoggerFactory

Logger slf4jLogger = LoggerFactory.getLogger("MiLogger")
slf4jLogger.warn("Mi propio Logger ha sido creado")



El resultado obtenido es:

>gradle
Mi propio Logger ha sido creado
:help

Welcome to Gradle 1.0-rc-3.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

BUILD SUCCESSFUL

Total time: 3.719 secs


No hay comentarios:

Publicar un comentario