Pregunta

Tengo una clase en src / groovy en mi proyecto de griales.

¿Cómo hago un campo de registro que se inyecta con el registrador correcto para esa clase?

¿Hay un registro de commons o simplemente log4j en grails?

¿Fue útil?

Solución

Lo agregarías como una clase de Java normal:

Logger log = Logger.getLogger(getClass()) // log4j

o

Log log = LogFactory.getLog(getClass()) // commons logging

Otros consejos

Grails 1.X

Una forma más inteligente de hacer lo mismo es:

private static log = LogFactory.getLog(this)

Esto se aprovecha del hecho de que this en un contexto estático se refiere al objeto Class , por lo que la línea anterior se puede copiar y pegar de una clase a otra sin modificación.

Grails 2.X

Use la anotación @ Log4j introducida en Groovy 1.8. Esto agregará una propiedad log

import groovy.util.logging.Log4j
@Log4j 
class MyClass {

  def doIt() {
    log.info 'hello'
  }
}

Una buena ventaja de usar la anotación es que el registrador convierte automáticamente llamadas como esta:

log.info 'hello'

a:

if (log.isInfoEnabled() {
  log.info 'hello'
}

Usando el nuevo Logger estándar Log4j (getClass ()) funcionó, pero registré 'java.lang.Class' para mí (usando Grails 1.2.1). Este problema desapareció con el complemento de Sublog y @WithLog. Consulte http://www.grails.org/plugin/sublog . ¡Este complemento tampoco hace que Trace se convierta en Debug y Fatal Error ...!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top