2012-07-06 77 views
5

我正在製作一個簡單的grails插件,它將充當我們公司各種項目日誌記錄的中央配置。總的想法是,你只需將插件添加到你的項目中,然後它將各種appender注入到根記錄器。我首先使用Graylog2 appender進行測試(如果我只是在Config.groovy中對其進行配置,它將起作用)。這是BootStrap.groovy中的[它獲取在啓動時執行的]我嘗試了代碼(在init():將Log4J appender注入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) 

該附加器被正確地實例化並附着在根記錄器,這裏是從輸出。rL.getAllAppenders()toList(){每個打印it.toString()}

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

所以,儘管被添加到根記錄的追加程序,和錯誤級別的消息被寫入到日誌(並顯示到默認的控制檯記錄器),它根本不會觸發Graylog2的消息(我已經使用Wireshark進行檢查來驗證這一點)。 ks很好,如果我只是在另一個項目的Config.groovy中設置值;但顯然這打破了這個插件的目的。

+0

我有同樣的問題,但在Config.groovy,你能告訴我你是如何使它工作?在此先感謝 – gurbieta 2013-11-26 02:13:37

回答

1

在將appender添加到根記錄器之前,您需要在appender上調用activateOptions()。當你在Config.groovy中配置appender時,Grails會爲你做這件事,這就是它在那裏工作的原因。

+0

您好,先生,是一個英雄。 – Noxville 2012-07-09 07:46:15