Log4j级别无法按预期工作

时间:2014-09-25 18:29:34

标签: logging log4j2

我已将log4j添加到我的项目中,因此我可以正确地对其进行调整。但是当我将日志级别设置为INFO或更高时,它会一直显示调试级别日志。这是我创建记录器的类的一部分:

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

注意:调试日志来自hibernate。也许这是一个休眠配置?

1 个答案:

答案 0 :(得分:0)

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

也就是说,请查看Manual Configuration上的用户手册页。关键的一点是,您需要在以编程方式修改配置后调用LoggerContext.updateLoggers()方法。