0

Log4jをLogbackに置き換えたGrailsプロジェクトがあります。ここで、ロギングorg.slf4j.Loggerにクラスの代わりに使用したいと考えています。依存性注入によって配置されるデフォルト オブジェクトをすべてのコントローラー/サービス/ドメイン クラスorg.apache.commons.logging.Logに変更するにはどうすればよいですか?log

BuildConfig.groovyファイル内を検索しましたConfig.groovyが、このための構成が見つかりませんでしたか? 私も見ましgrails-app/src/templates/artifacts/Controller.groovyたが、これを設定できる場所はまだ見つかりませんでした...

Shure、独自の のインスタンスを取得できますが、次のorg.slf4j.Loggerようにすべてのクラス内で宣言する必要があります

private static Logger lbLogger = LoggerFactory.getLogger(MyClass.class)

Loggerそれは私が望むものではありません-注入されたオブジェクトを単に置き換えたいのです。

このトピックに関する提案はありますか?

4

1 に答える 1

1

ログ オブジェクトがどのようにインジェクトされたか思い出せませんが、とにかく、独自のロガーをコントローラー、サービス、またはドメイン オブジェクトにインジェクトでき​​ます。

In BootStrap:
def doWithDynamicMethods = { applicationContext ->
        // def logger = SLF4J new instance
        application.controllerClasses.each { controllerClass ->
             controllerClass.metaClass.getLogger = {-> logger }
        }
  }

これがアイデアです。申し訳ありませんが、現在 Grails 環境を持っていないため、実行可能なコードを作成できません。

于 2012-12-10T18:46:37.823 に答える