从@PostConstruct -annotated方法调用logger时,Log4j未初始化

时间:2015-04-23 07:31:44

标签: java spring log4j slf4j

我使用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

1 个答案:

答案 0 :(得分:1)

在依赖注入完成之后,但在init-methods之前,Spring容器会调用PostConstruct方法。所以在后构造类实例中没有完全初始化。我建议您为此目的使用InitializingBeaninit-method