2012-07-06 8 views
5

Estoy haciendo un simple complemento de grills que servirá como configuración central para el registro de varios proyectos de nuestras compañías. La idea general es que simplemente agregue el complemento a su proyecto e inyectará los distintos apéndices al registrador de raíz. Estoy probando esto primero con un apéndice Graylog2 (que funciona si solo lo configuro en Config.groovy). Este es el código que he probado (en el init() de BootStrap.groovy [el cual es ejecutado en el arranque]:Inyectando un apilador de Log4J en una aplicación de Grails

def rL = Logger.rootLogger 
    def layout = new PatternLayout(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n') 

    Appender appender = new org.graylog2.log.GelfAppender(
      name:"gelf", 
      graylogHost:"graylog2.ourcompany.com", 
      extractStacktrace: true, 
      addExtendedInformation: true, 
      facility: "gelf-java", 
      threshold: org.apache.log4j.Level.INFO, 
      additionalFields: "{'runtime': 'grails', 'environment': 'dev', 'transport': 'gelf-java'}", 
      layout: layout 
    ) 
    rL.addAppender(appender) 

El appender se crea una instancia correctamente y se une al registrador de la raíz, aquí está la salida de .. rL.getAllAppenders() ToList() {it.toString cada impresión()}:

org.codeh[email protected]7a054197 
[email protected] 

Así, a pesar de la Appender de que se añade al registrador de la raíz, y los mensajes de nivel de error se escribe en el registro (y se muestra en el registrador de consola predeterminado), simplemente no dispara los mensajes a Graylog2 (lo he comprobado usando Wireshark para verificar esto). ks bien si solo establezco los valores en Config.groovy de otro proyecto; pero obviamente eso derrota el propósito de este complemento.

+0

Tengo el mismo problema pero en Config.groovy, ¿podría mostrarme cómo lo hace funcionar? Gracias de antemano – gurbieta

Respuesta

1

Debe llamar al activateOptions() en su appender antes de agregarlo al registrador de raíz. Grails hace esto por usted cuando configura el appender en Config.groovy y es por eso que funcionó allí.

+0

Usted, amable señor, es un héroe. – Noxville

Cuestiones relacionadas