我在我的项目中使用Hibernate
和java.util.Logger
类来记录日志。我有一个单独的配置文件。通过在日志配置文件中将org.hibernate.SQL.level
属性设置为ALL
,我可以在显示和不显示SQL查询之间切换,但我无法弄清楚如何执行此操作以编程方式(我想通过运行参数处理这个,但不必使用两个单独的日志配置文件)。
到目前为止,我已尝试在hibernate Configuration
类中设置此参数,但无效(属性已设置,我仔细检查,但没有查询显示)。
然后我认为它必须由Logger
类本身处理,但LogManager
没有任何设置属性的方法。通过网络浏览引导我前往FileHandler
课程,但我只能设置“常用”日志属性(例如pattern
,level
等)。
这是否意味着我错误地认为我必须更改Logger
类并且它实际上应该设置在hibernate的Configuration
中?如果是这样,为什么它不起作用?
答案 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.
}