应用log4j日志调式动态SQL(JDBC使用断点可以调试,然后输出拼接的SQL语句。Mybatis使用log4j进行调试可以完成此功能)
Mybatis支持日志,最常用的日志输出是log4j,Mybatis支持log4
j,只需要把Log4j的配置文件和Jar包导入即可,这样Mybatis就可以通过Log4j把最终执行的sql语句打印出来,并且包括参数,Log4j配置文件直接放在src文件夹下,这样就不用再编写加载Log4j配置文件路径的代码了。
Log4j配置文件:Mybatis源码包中也存在,它以.properties文件形式打开,其中的内容都是key和value进行存储,可以通过key取到value。
【1】log4j.rootLogger=DEBUG,Console:配置使用log4j输出日志的时候,输出的级别,以及输出的位置。
输出日志的形式:如下输出日志的级别是由低到高,当在log4j.properties中配置了DEBUG时,大于等于debug级别的日志输出都会被输出。
Logger对象调用debug("对象");
Logger对象调用info(对象);
Logger对象调用warn(对象);
Logger对象调用error(对象);
log4j.properties配置DEBUG的原因:可以从Mybatis源码中查看,因为是Mybatis通过log4j输出sql语句,源码中使用到了debug()进行输出,如果不配置它,Mybatis的日志信息不会被输出。
导入Mybatis源码:点击项目Properties属性,在Java Build Path的Libraries,找到Mybatis的jar包下的Source attachment...,然后edit,选中mybatis源码包。
如下图,Mybatis的org.apache.ibatis.logging.jdbc的这几个类就是输出日志用的。
Console代表日志信息的输出位置,它的名任意的。配置了ConsoleAppender这个类才会输出到控制台,如果想要输出到文件里,就需要把org.apache换成其他的类。
日志信息的布局配置(当前这个是自定义配置,所以还需要配置自定义格式)
当前自定义的日志信息布局格式。
%d:产生日志的时间。
%t:产生该日志所处的线程的名称。
%-5p:输出日志的级别(debug、info、warning、error)这里的5代表输出的字符至少5位字符,不足5位将用空格补齐,-号代表补齐的空格在右边,如果没有-补齐的空格将在左边。
%c:代表输出日志时,所处于的那个类的全名,包括包名。
%m:输出时附加的信息,也就是调用日志输出方法的里的信息。
%n:代表换行,如果没有它,所有的日志会连成一片。
前面的log4j.logger固定,后面是包名,rootLogger代表整个工程下所有输出日志的地方都将按照这种方式进行输出,也可以为某个包下的日志输出配置不同的级别,如下就是把org.apache包下的日志不按照该方式进行输出,也就是不会输出该包下的debug信息,这样就不会影响我们想要看的信息。
引入了log4j的jar包和配置文件,Mybatis自动就会输出日志的原因:Mybatis的jar包的logging下的LogFactory.class里定义好了各种各样的日志接口(log4j、log4j2、jdk ),使用哪一个日志,就会调用相应的日志接口完成日志输出。
properities文件:键=值
在log4j.properties文件中DEBUG,表示大于等于该级别的输出
log4j.rootLogger=DEBUG, Console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n log4j.logger.org.apacha=INFO
日志级别的设置
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
//%d产生日志的时间,
%t是产生日志所处的线程名称,
%-5p输出日志的级别,将占5位字符,不足5位用空格填补,-指的是在右边补齐,
%c你输出日志的包以及类的全名,
%m是你附加的信息
%n是换行
log4j.appender.Console.layout=org.apache.log4j.PatternLayout 布局方式
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
自定义输出内容的格式
%d 产生日志的时间
%t 产生日志所处于线程的线程名称
%p 输出的日志级别
-5输出的字符至少占5位字符,不足5位将会用空格补齐
负号指的是补齐的空格在右边,如果没有负号,补齐的空格将在左边
%c 你输出的日志所属于的那个类的全名,包括包名
%m 指的是你输出的时候附加的信息将会出现在这个位置
%n 指的是换行
log4j.logger.org.apache=INFO 为某个特定的包(org.apache)下面去配其他不同的级别
log4j.rootLogger=DEBUG,Console 针对整个工程下面所有输出日志的地方,都将会按照这个规定来输出
log4j.rootLogger=DEBUG,Console 输出日志的级别,位置
输出位置:输出到控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.rootLogger=DEBUG,Console 输出日志的级别,位置
输出日志的级别:由低到高
debug info warn error
log4j.rootLogger=DEBUG,Console 大于等于debug级别的输出形式都会输出
log4j.rootLogger=INFO,Console 大于等于info级别的输出形式都会输出,debug输出不出来了
...
以此类推
SSM学习---Mybatis之Log4j调试动态SQL
常用四种级别,从低到高:
Logger log;
log.debug("message");
log.info("message");
log.warn("message");
log.error("message");
1、jar包和配置文件 2、log4j.properties <1>log4j.rootLogger=DEBUG,Console:输出级别(级别<由低到高>debug/info/warn/error)和输出位置(控制台) <2>log4j.appender.Console=org.apache.log4j.ConsoleAppender:配置这个类才会输出在控制台(可在别处) <3>log4j.appender.layout=org.apache.log4j.PatternLayout:布局(按照自己的想法去输出)<4>log4j.appender.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n: %d:产生日志的时间 [%t]:产生日志所处线程的线程名称 %-5p:输出日志的级别、 "5":代表输出的字符会占5位字符,不足则会用空格补齐; "-":指的是补齐的空格在右边,没有则在左边. [%c]:指输出这个日志时处于的那个类的全名,包括包名 %m:输出的时候附加的信息 %n输出换行 <5>log4j.logger.org.apache=INFO:为不同包配不同的级别,把总的覆盖,可看到自己想看的信息
log4j.rootLogger=DEBUG,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.org.apache=INFO
DEBUG<INFO<WARN<ERROR 小于输出级别的都不会被打印
log4j配置文件:
1、rootLogger配置日志级别和输出的位置;(DEBUG,Console)
2、appender.Console设置日志输出位置;
3、Console.layout输出布局。
为了能查看mybatis输出的日志,从源码可以知道,日志级别都为debug,所以日志级别设置为debug。
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
//%d产生日志的时间,
%t是产生日志所处的线程名称,
%-5p输出日志的级别,将占5位字符,不足5位用空格填补,-指的是在右边补齐,
%c你输出日志的包以及类的全名,
%m是你附加的信息
%n是换行
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
//%d产生日志的时间,
%t是产生日志所处的线程名称,
%-5p输出日志的级别,将占5位字符,不足5位用空格填补,-指的是在右边补齐,
%c你输出日志的包以及类的全名,
%m是你附加的信息
%n是换行