2014-09-25 33 views
1

我将log4j添加到我的项目中,以便我可以正确地修改它。但是当我将日志级别设置为INFO或更高级别时,它会一直显示调试级别日志。在这里,我创建了记录类的部分:Log4j级别不按预期方式工作

public abstract class DefaultDaoImpl<T> implements DefaultDao<T> { 

private EntityManager em; 
private Class<T> classeEntidade; 
private static final Logger logger = Logger.getLogger(DefaultDaoImpl.class); 

public DefaultDaoImpl(Class<T> classeEntidade) { 
    this.classeEntidade = classeEntidade; 
    logger.setLevel(Level.INFO); 
    BasicConfigurator.configure(); 
} 

这里生成的日志的一部分:

2847 [main] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl - Releasing JDBC connection 
2847 [main] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl - Releasing JDBC connection 
2847 [main] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl - Released JDBC connection 
2847 [main] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl - Released JDBC connection 
2847 [main] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl - Released JDBC connection 
2847 [main] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl - Released JDBC connection 

注:调试日志从休眠状态来了。也许这是一个休眠配置?

回答

0

我建议你用配置文件配置log4j2并在该配置文件中指定所需的级别。对于其他任何你依赖于实现的细节,当你升级到更新版本的log4j2时,你的代码可能会中断。

这就是说,看看Manual Configuration上的用户手册页。一个关键的问题是,您需要在编程修改配置后调用LoggerContext.updateLoggers()方法。