2012-07-04 33 views
5

tôi muốn tiêm một Log4j Logger (hoặc trong trường hợp tổng quát bất kỳ lớp) vào tất cả các lớp học của tôi có một tài sản log:Groovy Dependency Injection

def log 

này được thực hiện trong Grails tự động. Tôi muốn có cùng một tính năng trong các ứng dụng groovy thông thường, cho phép nói cho tất cả các tệp groovy dưới src. Đặc biệt với Log4j là, trình ghi nhật ký cần biết lớp cần đăng nhập. (Logger.getLogger(Class clazz))

Làm thế nào tôi có thể đạt được điều này?

Trả lời

11

Bạn đã xem số @Logannotation added trong Groovy 1.8 chưa?

+0

Awesome! Tôi phải bỏ lỡ điều đó. Các bạn thực sự làm một công việc tốt ở đó! Cám ơn. – matcauthon

+0

Trên thực tế, tại thời điểm viết bài này, chú thích cho log4j và slf4j [có vẻ] (https://jira.codehaus.org/browse/GROOVY-5557) sẽ bị [hỏng] (https: //jira.codehaus. org/browse/GROOVY-5574) trong Groovy 2.0 ... –

+1

Đã có một cái nhìn vào nó, và nó có vẻ là một vấn đề classpath .. miễn là log4j là trên classpath khi các kịch bản được thực hiện, chú thích nên làm việc tốt :-D –

3

Groovy cung cấp hỗ trợ gốc cho việc này bằng cách sử dụng @Log4j annotation trên lớp học. Điều này tạo ra một trỏ log trường vào Log4J Logger với tên giống như lớp trong câu hỏi, tức là .:

package com.example 
import groovy.util.logging.Log4j 

@Log4j 
public class LogExample { 
} 

là tương đương với

package com.example 
public class LogExample { 
    private static final Logger log = Logger.getLogger(LogExample.class) 
} 
Các vấn đề liên quan