Mybatis日志相关

一 日志工厂

如果一个数据库操作,出现了异常,我们需要排错。日志就是最好的助手!

sout、debug可以实现排错。

官网图表

设置名

描述

有效值

默认值

logImpl

指定 MyBatis 所用日志的具体实现,未指定时将自动查找。

SLF4J 

LOG4J (常用)

LOG4J2(常用)

JDK_LOGGING

COMMONS_LOGGING

STDOUT_LOGGING(默认)

NO_LOGGING

未设置

在Mybatis中具体使用哪个日志实现,在设置中设定。

二 配置



    

输出多出了很多内容

Created connection 802581203.
Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2fd66ad3]
==>  Preparing: select * from user where id = ?
==> Parameters: 1(Integer)
<==    Columns: id, name, pwd
<==        Row: 1, cakin, 12345
<==      Total: 1
User{id=1, name='cakin', password='12345'}
Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2fd66ad3]
Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@2fd66ad3]
Returned connection 802581203 to pool.

三 Log4j整合

1 什么是Log4j

  • Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件。

  • 可以控制每一条日志的输出格式。

  • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

  • 通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

2 使用步骤

2.1 先导入log4j包



    log4j
    log4j
    1.2.17

2.2 log4j.properties

# https://blog.csdn.net/reggergdsg/article/details/73618900 解读日志配置
###配置日志根Logger
#Log4j 根配置语法
#log4j.rootLogger = [ level ] , appenderName, appenderName, …
#把指定级别以上的日志信息输出到指定的一个或者多个位置
log4j.rootLogger=DEBUG,stdout,file

#ERROR 为严重错误 主要是程序的错误
#WARN 为一般警告,比如session丢失
#INFO 为一般要显示的信息,比如登录登出
#DEBUG 为程序的调试信息

# https://blog.csdn.net/hongweigg/article/details/14169477 解读additivity
log4j.additivity.org.apache=true

####################################输出到控制台的配置########################################
###配置日志信息输出目的地Appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#org.apache.log4j.ConsoleAppender(控制台)
#org.apache.log4j.FileAppender(文件)
#org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
#org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
#org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
#log4j.appender.error.Target=System.out
###输出INFO级别以上的日志
log4j.appender.stdout.threshold=DEBUG
###配置日志信息的格式(布局)
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#org.apache.log4j.HTMLLayout(以HTML表格形式布局)
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
#org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
#org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
###配置日志打印的格式格式化日志信息
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

#%m   输出代码中指定的消息
#%p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
#%r   输出自应用启动到输出该log信息耗费的毫秒数
#%c   输出所属的类目,通常就是所在类的全名
#%t   输出产生该日志事件的线程名
#%n   输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
#%d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS}
#%l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
##############################################################################################

####################################输出到文件的配置########################################
#log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH-mm
# '.'yyyy-MM:每月滚动一次日志文件,即每月产生一个新的日志文件。当前月的日志文件名为logging.log4j,前一个月的日志文件名logging.log4j.yyyy-MM。
# '.'yyyy-ww:每周
# '.'yyyy-MM-dd:每天
# '.'yyyy-MM-dd-a:每天两次
# '.'yyyy-MM-dd-HH:每小时
# '.'yyyy-MM-dd-HH-mm:每分钟
# 后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。
#log4j.appender.file.MaxFileSize=1MB
###滚动文件的最大数
# 指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件#和一个logging.log4j文件。
#log4j.appender.file.MaxBackupIndex=8
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-30c{1}) [TxId : %X{PtxId} , SpanId : %X{PspanId}] [ET:%X{ENV_TYPE},AN:%X{APP_NAME},SN:%X{SERVICE_NAME},CN:%X{CONTAINER_NAME},CI:%X{CONTAINER_IP}] %m%n
log4j.appender.file.Threshold=DEBUG
###将消息增加到指定文件中,false指将消息覆盖指定的文件内容
log4j.appender.file.append=true
###日志的保存位置
log4j.appender.file.File=./logs/debug-debug.log
###每天产生一个日志文件
#log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.maxFileSize=100
#log4j.appender.file.maxBackupIndex=5
#log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-30c{1}) [TxId : %X{PtxId} , SpanId : %X{PspanId}] [ET:%X{ENV_TYPE},AN:%X{APP_NAME},SN:%X{SERVICE_NAME},CN:%X{CONTAINER_NAME},CI:%X{CONTAINER_IP}] %m%n
#log4j.appender.file.Threshold=DEBUG
#log4j.appender.file.append=true
#log4j.appender.file.File=E:/logs/debug-log.log
# 日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

2.3 配置log4j为实现类



    
    

2.4 log4j的使用,运行结果如下

Sun Jun 21 11:45:47 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
2020-06-21 11:45:47 DEBUG PooledDataSource:424 - Created connection 1268959798.
2020-06-21 11:45:47 DEBUG JdbcTransaction:100 - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@4ba2ca36]
2020-06-21 11:45:47 DEBUG getUser:143 - ==>  Preparing: select * from user where id = ?
2020-06-21 11:45:47 DEBUG getUser:143 - ==> Parameters: 1(Integer)
2020-06-21 11:45:47 DEBUG getUser:143 - <==      Total: 1
User{id=1, name='cakin', password='12345'}
2020-06-21 11:45:47 DEBUG JdbcTransaction:122 - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@4ba2ca36]
2020-06-21 11:45:47 DEBUG JdbcTransaction:90 - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@4ba2ca36]
2020-06-21 11:45:47 DEBUG PooledDataSource:381 - Returned connection 1268959798 to pool.

四 简单使用

1 在要使用的Log4j的类中,导入包 import org.apache.log4j.Logger;

2 日志对象,参数为当前类的class

static Logger logger = Logger.getLogger(UserDaoTest.class);

3 使用方法

logger.info("start..........");

4 能打印到日志文件

Mybatis日志相关_第1张图片

你可能感兴趣的:(MyBatis,java)