Spring2+iBatis怎么同时把执行的SQL语句和session里的信息打印到Log里。
Spring2+iBatis
现在想出log,log里的一行内容想有
1)用户名
2)执行的SQL
其中用户名就是session里用户login时存得信息。
目前看到输出SQL,ibatis和log4j结合配置一下好像可以,但是出来的格式很固定。
其实我就想得到prepareSQL ?被替换后,执行时的完整SQL。这个ibatis可以嘛?
而且希望同时能把用户名一起输出,请问用什么办法?
希望做过的人给个例子 包括java和配置
------解决方案--------------------用spring+ibatis+log4j,仅靠配置文件是达不到你说的效果的。
如果效果一定是你要求的,有2个思路来做。
(一)
1 配置log4j.property,让ibatis包里面的类的日志级别是DEBUG,这样可以把SQL记录到日志中。
2 用SPRING的AOP,在每次service或者DAO方法执行之前先执行你自己写的代码,把用户名也写到日志中。
3 用专门的代码处理日志文件,因为日志文件中有用户名,也有SQL语句,可以处理出来。
(二)
修改ibatis的核心类,即执行SQL的类,加上日志功能。
------解决方案-------------------->>>可以输出sql了,但格式固定
log4j不能格式化一下输出的sql吗?
------解决方案--------------------那这关系到ibatis了,它难道只能输出带?的sql? 实际的sql语句是在ibatis中执行的吧
二楼说的改为Debug可以吗
------解决方案--------------------不清楚itatis是如何与log4j整合的,但我想既然需要的信息已都存在,可能会有办法在ibatis之外解决。
当然ibatis是开源的,直接修改应该也不会太复杂。
------解决方案--------------------看看这个可以吗?
打印出Ibatis最终的SQL语句
http://www.blogjava.net/itspy/archive/2007/02/11/99232.html
http://stackoverflow.com/questions/4082834/ibatis-spring-how-to-log-the-sql-that-is-executed