私は、ログプロパティを持つすべての私のクラスにLog4jのロガー(または一般の場合には任意のクラス)を注入したい:これは、自動的にGrailsで行われGroovyの依存性注入
def log
。私は通常のGroovyアプリで同じ機能を使いたいと思っています。src
のすべてのGroovyファイルについて言えます。 Log4jの特長は、ログを記録するクラスをロガーが知る必要があることです。 (Logger.getLogger(Class clazz)
)
どうすればいいですか?
私は、ログプロパティを持つすべての私のクラスにLog4jのロガー(または一般の場合には任意のクラス)を注入したい:これは、自動的にGrailsで行われGroovyの依存性注入
def log
。私は通常のGroovyアプリで同じ機能を使いたいと思っています。src
のすべてのGroovyファイルについて言えます。 Log4jの特長は、ログを記録するクラスをロガーが知る必要があることです。 (Logger.getLogger(Class clazz)
)
どうすればいいですか?
Groovy 1.8で@Log
annotation addedを見たことがありますか?
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)
}
恐ろしいのと同じです!私はそれを見逃しているに違いない。あなたは本当にそこでいい仕事をしています!どうも。 – matcauthon
実際には、これを書いている時点で、log4jとslf4jの注釈(https://jira.codehaus.org/browse/GROOVY-5557)は[破損](https://jira.codehaus。 Groovy 2.0の... –
で見たことがありますが、クラスパスの問題と思われます。スクリプトが実行されるときにlog4jがクラスパス上にある限り、アノテーションは正常に動作するはずです:-D –