问题描述
|
在我们的Web应用程序中,我们正在使用java.util.Logging(实际上是JULI,因为我们已部署到Tomcat 6)。日志记录由WEB-INF / classes中的logging.properties文件配置。
我想配置记录器,使其可以自动接线,例如:
@Autowired
private Logger mylogger;
我已经搜索了Spring论坛,Web,当然还有Stack Overflow,但找不到如何设置它。我对此表示感谢。
谢谢!
解决方法
一种方法是使用Java Config样式,因此您将拥有一个像这样的bean:
@Configuration
public class LoggerProvider {
@Bean
public Logger logger() {
return Logger.getLogger(\"foobar.whatever\");
}
}
然后可以正常将其自动连接到应用程序的其余部分。
, 为了在某个东西(一个bean)上使用@Autowired,必须使该bean处于弹簧控制状态。有很多方法可以做到这一点,它们取决于您要使用的日志记录框架。
恐怕没有一个“一刀切”的解决方案。
通常,您会使用由您选择的日志记录框架提供的静态初始化程序或对其进行某种抽象处理(例如,commons-logging)。
我找到了一个引用,其中引入了@Logger批注,也许可以将您引向您喜欢的方向:
http://jgeeks.blogspot.com/2008/10/auto-injection-of-logger-into-spring.html
, 为了使Logger可以使用@Autowired
注入,必须具有一个配置类,在其中配置了所有使用@Autowired
的Bean。该课程将以@Configuration
标记。在那里,您必须在配置中放入以下“ 5”字样:
@Configuration
public class WebConfiguration {
@Bean
@Scope(\"prototype\")
public Logger produceLogger(InjectionPoint injectionPoint) {
Class<?> classOnWired = injectionPoint.getMember().getDeclaringClass();
return LoggerFactory.getLogger(classOnWired);
}
}