3

Webアプリケーションでは、java.util.Loggingを使用しています(実際には、Tomcat 6にデプロイするためJULI)。ロギングは、WEB-INF/classesのlogging.propertiesファイルによって構成されます

次のように、自動配線できるようにロガーを構成したいと思います。

@Autowired
private Logger mylogger;

Springフォーラム、Web、そしてもちろんStack Overflowを検索しましたが、これを設定する方法が見つかりません。これについて助けていただければ幸いです。

ありがとう!

4

3 に答える 3

3

1つの方法は、Java Configスタイルを使用することです。したがって、次のようなBeanが1つあります。

@Configuration
public class LoggerProvider {
    @Bean
    public Logger logger() {
        return Logger.getLogger("foobar.whatever");
    }
}

その後、通常どおりアプリの残りの部分に自動配線できます。

于 2011-06-14T22:09:32.210 に答える
2

何か(Bean)で@Autowiredを使用するには、そのBeanをスプリング制御にする必要があります。これを行うには多くの方法があり、それらは使用するロギングフレームワークによって異なります。

「万能」ソリューションはないのではないかと思います。

通常は、選択したロギングフレームワークによって提供される静的初期化子、またはそれに対する何らかの抽象化(commons-loggingなど)を使用します。

@Loggerアノテーションが導入されているリファレンスを1つ見つけました。これは、好みの方向を示している可能性があります。

http://jgeeks.blogspot.com/2008/10/auto-injection-of-logger-into-spring.html

于 2011-06-14T21:28:40.887 に答える
1

Loggerをで注入可能にする@Autowiredには、使用するすべてのBeanを構成した構成クラスが必要です@Autowired。そのクラスは。でマークされ@Configurationます。@Beanそこで、構成に次のものを含める必要があります。

@Configuration
public class WebConfiguration {

    @Bean
    @Scope("prototype")
    public Logger produceLogger(InjectionPoint injectionPoint) {
        Class<?> classOnWired = injectionPoint.getMember().getDeclaringClass();
        return LoggerFactory.getLogger(classOnWired);
    }
}
于 2018-02-20T12:23:16.563 に答える