2012-07-04 27 views
5

私は、ログプロパティを持つすべての私のクラスにLog4jのロガー(または一般の場合には任意のクラス)を注入したい:これは、自動的にGrailsで行われGroovyの依存性注入

def log 

。私は通常のGroovyアプリで同じ機能を使いたいと思っています。srcのすべてのGroovyファイルについて言えます。 Log4jの特長は、ログを記録するクラスをロガーが知る必要があることです。 (Logger.getLogger(Class clazz)

どうすればいいですか?

答えて

11

Groovy 1.8で@Logannotation addedを見たことがありますか?

+0

恐ろしいのと同じです!私はそれを見逃しているに違いない。あなたは本当にそこでいい仕事をしています!どうも。 – matcauthon

+0

実際には、これを書いている時点で、log4jとslf4jの注釈(https://jira.codehaus.org/browse/GROOVY-5557)は[破損](https://jira.codehaus。 Groovy 2.0の... –

+1

で見たことがありますが、クラスパスの問題と思われます。スクリプトが実行されるときにlog4jがクラスパス上にある限り、アノテーションは正常に動作するはずです:-D –

3

Groovyは、クラスの@Log4j annotationを使用してネイティブサポートを提供しています。これはすなわち、問題のクラスと同じ名前のLog4Jのロガーを指すlogフィールドを作成します。:

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

@Log4j 
public class LogExample { 
} 

package com.example 
public class LogExample { 
    private static final Logger log = Logger.getLogger(LogExample.class) 
}