以编程方式设置logger属性以显示hibernate查询

时间:2017-04-13 13:51:16

标签: java hibernate java.util.logging

我在我的项目中使用Hibernatejava.util.Logger类来记录日志。我有一个单独的配置文件。通过在日志配置文件中将org.hibernate.SQL.level属性设置为ALL,我可以在显示和不显示SQL查询之间切换,但我无法弄清楚如何执行此操作以编程方式(我想通过运行参数处理这个,但不必使用两个单独的日志配置文件)。

到目前为止,我已尝试在hibernate Configuration类中设置此参数,但无效(属性已设置,我仔细检查,但没有查询显示)。

然后我认为它必须由Logger类本身处理,但LogManager没有任何设置属性的方法。通过网络浏览引导我前往FileHandler课程,但我只能设置“常用”日志属性(例如patternlevel等)。

这是否意味着我错误地认为我必须更改Logger类并且它实际上应该设置在hibernate的Configuration中?如果是这样,为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

  

...我无法弄清楚如何以编程方式执行此操作(我希望通过运行参数处理此问题,但无需使用两个单独的日志配置文件)。

我会假设当前情况解决了问题,因为使用运行时参数设置了日志配置。也就是说,一般方法是获取并存储对记录器的强引用并更改该记录器的属性。

private static final Logger hardRef = Logger.getLogger("org.hibernate.SQL");
static {
    if (traceSql()) {
        hardRef.setLevel(Level.ALL);
    }
}

private static boolean traceSql() {
    return true; //@todo Add code.
}