一直是使用properties或xml来配置log4j,偶尔现场会出现“灵异”事件,即可能会偶尔出现一些异常问题,但平时的logger level都至少是info以上。因为是偶然事件,所以现场提出了可以在出问题时动态修改log级别以便输出详细信息来定位,毕竟重现不容易。
简单查看了下,核心代码就几句:
org.apache.log4j.Logger.getLogger("org.hibernate").setLevel(Level.ERROR);
上述即可将ogr.hibernate包下所有日志级别调为ERROR,Level.to()是一个重载方法,可以传入int,String以灵活生成log4j的Level。将“org.hibernate”修改为特定的类名,那么就是修改对应类的日志级别了。对于web工程,做个页面现场就可灵活配置log4j日志级别,动态控制日志输出。