2009-02-05 4 views
6

Cách tốt nhất để sử dụng tệp log4j.properties bên ngoài trong Grails là gì? Tôi muốn sử dụng định dạng log4j.properties truyền thống hơn là cấu hình kiểu log4j.groovy.Sử dụng tệp log4j.properties bên ngoài với Grails

Tôi cũng tò mò nếu cấu hình bên ngoài sẽ phát độc đáo với tệp log4j.properties được tạo bởi grails war và được đưa vào tệp chiến tranh. Nếu tôi xóa cấu hình log4j khỏi Config.groovy thì log4j.properties vẫn được đưa vào tệp war?

+0

tôi revisited này hôm nay và tìm thấy [bài đăng trên blog này] (http://techbeats.deluan.com/how-to-use-an-external-log4jproperties-in-you-0) cung cấp cách để thực hiện điều này bằng cách sử dụng bean Log4jConfigurer của Spring. Nếu tôi có cơ hội thử nó, tôi có thể đăng câu trả lời. –

Trả lời

3

Kiểm tra các Log4J Plugin trong đó nêu:.

"Một số trường cũ nhà phát triển Java cảm thấy thoải mái hơn với log4j.xml dù file cấu hình là lớn hơn nhiều Plugin này cung cấp một cách để vô hiệu hóa mặc định Log4j DSL và cho phép sử dụng log4j.xml ở dạng gốc hoặc theo kiểu Groovy MarkupBuilder. "

Tôi đã không sử dụng nó bản thân mình vì vậy không thể nói đến khả năng sử dụng của nó trong bối cảnh WAR .. Chỉ cần WAR lên ứng dụng của bạn, và sau đó thử nó .. Nó phải được theo thư mục WEB-INF một nơi nào đó rõ ràng. Nếu cách này không hiệu quả, Mingfai trên grails user list có thể giúp bạn.

+0

+1 Đây là một giải pháp hợp lý, nhưng sẽ không hoàn toàn phù hợp với tôi, vì tôi đang sử dụng Grails 1.0.3 (plugin chỉ hoạt động cho 1.1). Một câu trả lời hữu ích, mặc dù. Cảm ơn. –

4

Nếu bạn đang sử dụng 1.0.x series:

  • sao chép War.groovy từ $ GRAILS_HOME/script đến $ APP của bạn/script
  • bình luận ra dòng 145 và 154 của War.groovy sao chép
  • đặt log4j.properties của bạn vào $ APP/grails-app/conf
  • chạy chiến tranh $ grails và nó sẽ nhắc bạn chọn tập lệnh War nào để chạy, sau đó chọn tập lệnh địa phương (thường là # 1).
0

Ít nhất trong chuỗi 1.0.x (không được chọn trong 1.1), hãy quên hỗ trợ của Grails và dựa trực tiếp vào Spring. Chỉ cần sử dụng tham số log4jConfigLocation trong web.xml. Thông tin thêm here

6

Trong Grails 1 và 2, có một logging DSL được cấu hình và sử dụng trong một webapp out-of-the-box, vì vậy bạn sẽ muốn loại bỏ mã log4j = { ... } từ grails-app/conf/Config.groovy

Nếu bạn muốn sử dụng một tệp cấu hình bên ngoài để ghi nhật ký như trong một ứng dụng web Java điển hình, sau đó cập nhật tệp grails-app/conf/spring/resources.groovy bằng những điều sau đây.

beans = { 
    log4jConfigurer(org.springframework.beans.factory.config.MethodInvokingFactoryBean) { 
     targetClass = "org.springframework.util.Log4jConfigurer" 
     targetMethod = "initLogging" 
     arguments = ["classpath:log4j.properties"] 
    } 
} 

Lưu ý rằng tên gói được sử dụng trong cấu hình appender Log4j của bạn có thể sẽ không thể là những gì bạn mong đợi, vì nó sẽ có một tiền tố Grails cụ thể thêm vào nó ...

WARN grails.app.controllers.org.example.BookController - This is a warn log message from BookController 
ERROR grails.app.controllers.org.example.BookController - This is an error log message from BookController