2012-07-06 33 views
5

Tôi đang tạo một plugin grails đơn giản sẽ hoạt động như cấu hình trung tâm cho các công ty của chúng tôi đăng nhập các dự án khác nhau. Ý tưởng chung là bạn chỉ cần thêm plugin vào dự án của bạn và nó sẽ đưa các trình bổ sung khác nhau vào trình ghi nhật ký gốc. Tôi đang thử nghiệm điều này đầu tiên với một ứng dụng Graylog2 (hoạt động nếu tôi chỉ cấu hình nó trong Config.groovy). Đây là mã tôi đã cố gắng (trong init() của BootStrap.groovy [mà được thực hiện khi khởi động]:Tiêm ứng dụng Log4J vào ứng dụng 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) 

Các appender được khởi tạo một cách chính xác và gắn liền với các logger gốc, đây là đầu ra từ .. rL.getAllAppenders() ToList() {print mỗi it.toString()}:

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

Vì vậy, mặc dù appender được thêm vào logger gốc, và thông báo lỗi cấp được ghi vào nhật ký (và hiển thị mặc định là Console Logger), nó đơn giản không kích hoạt các tin nhắn tới Graylog2 (tôi đã kiểm tra bằng Wireshark để xác minh điều này). ks tốt nếu tôi chỉ thiết lập các giá trị trong Config.groovy của một dự án khác; nhưng rõ ràng là đánh bại mục đích của plugin này.

+0

Tôi có cùng một vấn đề nhưng trong Config.groovy, bạn có thể chỉ cho tôi cách bạn làm cho nó hoạt động không? Cảm ơn trước – gurbieta

Trả lời

1

Bạn cần gọi activateOptions() trên ứng dụng của mình trước khi thêm nó vào trình ghi nhật ký gốc. Grails làm điều này cho bạn khi bạn cấu hình appender trong Config.groovy đó là lý do tại sao nó làm việc ở đó.

+0

Bạn, loại sir, là một anh hùng. – Noxville

Các vấn đề liên quan