以编程方式设置记录器属性以显示休眠查询



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

到目前为止,我已经尝试在休眠Configuration类中设置此参数,但无济于事(属性正在设置,我仔细检查,但没有显示任何查询)。

然后我认为它必须由类本身处理Logger但是LogManager没有任何设置属性的方法。浏览网页引导我进入FileHandler类,但我只能设置"通常"的日志属性(如patternlevel等)。

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

...我不知道如何以编程方式做到这一点(我想通过运行参数处理这个问题,但不必使用两个单独的日志配置文件)。

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

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.
}

最新更新