我正在使用Hibernate
和java.util.Logger
类来记录项目中的日志。我有一个单独的配置文件。我可以通过在日志配置文件中将属性设置为ALL
来在显示和不显示 SQL 查询之间切换org.hibernate.SQL.level
但我无法弄清楚如何以编程方式执行此操作(我想通过运行参数处理这个问题,但不必使用两个单独的日志配置文件)。
到目前为止,我已经尝试在休眠Configuration
类中设置此参数,但无济于事(属性正在设置,我仔细检查,但没有显示任何查询)。
然后我认为它必须由类本身处理Logger
但是LogManager
没有任何设置属性的方法。浏览网页引导我进入FileHandler
类,但我只能设置"通常"的日志属性(如pattern
、level
等)。
这是否意味着我认为我必须更改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.
}