2012-07-06 10 views
5

私は、様々なプロジェクトのロギングの中心的な構成として機能する簡単なgrailsプラグインを作っています。一般的な考え方は、プロジェクトにプラグインを追加するだけで、さまざまなアペンダーをルートロガーに注入するということです。私はGraylog2アペンダを使ってこれを最初にテストしています(これはConfig.groovyで設定すれば動作します)。アペンダが正しくルートロガーにインスタンス化され、装着されている Log4Jアペンダを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) 

、ここ から出力されます。これは、[起動時に実行されます] BootStrap.groovyの初期化中に、私が試したコード(()でありますrL.getAllAppenders()ToListメソッド()各{印刷it.toString()}:アペンダがログに書き込まれるルートロガー、およびエラーレベルのメッセージに追加されるにもかかわらず

だから
org.codeh[email protected]7a054197 
[email protected] 

、。 (デフォルトのConsole Loggerに表示されます)、単にGraylog2へのメッセージを出しません(私はこれを確認するためにWiresharkを使ってチェックしました)。私がちょうど別のプロジェクトのConfig.groovyに値を設定していれば、ksは正常です。明らかに、このプラグインの目的を破っています。

+0

私は同じ問題を抱えていますが、Config.groovyでは、どのように動作させるかを教えてくれますか?事前に感謝 – gurbieta

答えて

1

ルートロガーに追加する前に、アペンダーでactivateOptions()に電話する必要があります。あなたがアペンダーをConfig.groovyに設定した時にGrailsがこれを実行します。

+0

あなたは、親切な、英雄です。 – Noxville

関連する問題