我使用Spring,log4j和slf4j。在尝试从@PostConstruct -annotated方法log4j中记录一些信息时,抱怨尚未初始化。当我稍后从这个类登录log4j工作正常。
private final static Logger log = LoggerFactory.getLogger(MyClass.class);
@PostConstruct
public void init() {
log.info("initializing service");
}
输出:
log4j:WARN没有为logger找到appender(mypackage.MyClass)
Log4j配置是一个基于文件的配置:
log4j.rootLogger=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %-5p %c %x - %m%n
答案 0 :(得分:1)
在依赖注入完成之后,但在init-methods之前,Spring容器会调用PostConstruct
方法。所以在后构造类实例中没有完全初始化。我建议您为此目的使用InitializingBean
或init-method
。