Mybatis使用xml方式配置(五)日志实现

相关章节:
Mybatis使用xml方式配置
Mybatis使用xml方式配置(二)
Mybatis使用xml方式配置(三)
Mybatis使用xml方式配置(四)结果映射resultMap

官网地址:https://mybatis.org/mybatis-3/zh/configuration.html

Mybatis使用xml方式配置(三)中,提到了日志的实现。这里就简单使用下其中的两种:

  • SLF4J
  • LOG4J
  • LOG4J2
  • JDK_LOGGING
  • COMMONS_LOGGING
  • STDOUT_LOGGING
  • NO_LOGGING

1. STDOUT_LOGGING标准日志

mybatis-config.xml文件中,加入对应的settings标签,如下:

<!--核心配置文件-->
<configuration>

    <properties resource="db.properties"/>
    
    <settings>
        <!--标准日志配置-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    
    <typeAliases>
        <typeAlias type="com.weizu.pojo.UserInfo" alias="userInfo"/>
    </typeAliases>
    ...
</configuration>

注意放置的位置。配置的位置顺序如下:
在这里插入图片描述
此时,还是运行测试方法:

@org.junit.Test
public void find(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserDao mapper = sqlSession.getMapper(UserDao.class);

    // 查找,传入基本类型
    UserInfo userInfoByID = mapper.findUserInfoByID(234);
    System.out.println(userInfoByID); // success
}

结果:

D:\softwares\Java\jdk1.8.0_211\bin\java.exe -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\softwares\IntelliJ IDEA Community Edition 2020.2\lib\idea_rt.jar=58828:D:\softwares\IntelliJ IDEA Community Edition 2020.2\bin" -Dfile.encoding=UTF-8 -classpath "D:\softwares\IntelliJ IDEA Community Edition 2020.2\lib\idea_rt.jar;D:\softwares\IntelliJ IDEA Community Edition 2020.2\plugins\junit\lib\junit5-rt.jar;D:\softwares\IntelliJ IDEA Community Edition 2020.2\plugins\junit\lib\junit-rt.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\charsets.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\deploy.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\access-bridge-64.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\cldrdata.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\dnsns.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\jaccess.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\jfxrt.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\localedata.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\nashorn.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\sunec.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\sunjce_provider.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\sunmscapi.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\sunpkcs11.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\ext\zipfs.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\javaws.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\jce.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\jfr.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\jfxswt.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\jsse.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\management-agent.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\plugin.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\resources.jar;D:\softwares\Java\jdk1.8.0_211\jre\lib\rt.jar;D:\project\pro\myStudyProject\MybatisPro\target\test-classes;D:\project\pro\myStudyProject\MybatisPro\target\classes;C:\Users\w\.m2\repository\mysql\mysql-connector-java\8.0.13\mysql-connector-java-8.0.13.jar;C:\Users\w\.m2\repository\com\google\protobuf\protobuf-java\3.6.1\protobuf-java-3.6.1.jar;C:\Users\w\.m2\repository\org\mybatis\mybatis\3.4.5\mybatis-3.4.5.jar;C:\Users\w\.m2\repository\junit\junit\4.13.2\junit-4.13.2.jar;C:\Users\w\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 Test,find
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
PooledDataSource forcefully closed/removed all connections.
Opening JDBC Connection
Created connection 275266973.
Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@10683d9d]
==>  Preparing: select * from userinfo where userid = ? 
==> Parameters: 234(Integer)
<==    Columns: username, userId, passwd
<==        Row: 张三, 234, aaaa
<==      Total: 1
UserInfo{username='张三', userid=234, passwd='aaaa'}

2. LOG4J日志

  • Log4j是Apache的一个开源项目
  • 通过使用Log4j,我们可以控制日志信息输送的目的地:控制台,文本,GUI组件…
  • 我们也可以控制每一条日志的输出格式;
  • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
  • 这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

我们需要在pom.xml文件中引入相关依赖:

<!--日志依赖-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

然后,在resources文件夹下,创建log4j所需要的配置文件log4j.properties文件:

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file

#控制台输出的相关设置
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

#文件输出的相关设置
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/mylog.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

#日志输出级别
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

然后,在mybatis-config.xml文件中,配置设置日志的实现方式为LOG4J,即:

<configuration>
    <properties resource="db.properties"/>
    
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    
    <typeAliases>
        <typeAlias type="com.weizu.pojo.UserInfo" alias="userInfo"/>
    </typeAliases>
	...
</configuration>

值得一提的是,由于在我的mybatis-config.xml文件中,我写了一些中文的注释,如:
<!--核心配置文件-->
然后,乱码,报了一个错误:
在这里插入图片描述

Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效。

target文件中,可以看见mybatis-config.xml文件中的乱码
在这里插入图片描述
简单的解决方案就是删除原文件mybatis-config.xml文件中的该注释即可。
最终测试结果:
在这里插入图片描述
可以看见测试的实现是Log4jImpl实现。日志信息差不多。
log4j中提供了自己定义输出日志的方式:
导包时注意,导入的是org.apache.log4j.Logger;
我们在测试类中:

public class Test {

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

    @org.junit.Test
    public void find(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        // 自定义日志
        logger.info("Get into method find to find userInfo by userId.");
        // 查找,传入基本类型
        UserInfo userInfoByID = mapper.findUserInfoByID(234);
        System.out.println(userInfoByID); // success
    }
    ...
}

在日志文件中,我们可以看见:
在这里插入图片描述
并且控制台也有该信息:
在这里插入图片描述


https://www.bilibili.com/video/BV1NE411Q7Nx?p=12
https://www.cnblogs.com/renxuw/p/13047424.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. web.xml:这是一个Java Web 项目的核心配置文件,主要用于配置Servlet、Filter、Listener等Web组件,并且定义了Servlet容器的一些基本配置,如编码、Session管理、错误页面等。其中,常用的配置包括: - 配置Servlet:用于处理HTTP请求的Java类。 - 配置Filter:用于对HTTP请求进行过滤和处理。 - 配置Listener:用于监听Web应用程序的生命周期事件。 2. springmvc-config.xml:这是一个Spring MVC框架的配置文件,主要用于配置Spring MVC的核心组件,如HandlerMapping、ViewResolver、Interceptor等。其中,常用的配置包括: - 配置HandlerMapping:用于映射请求到相应的控制器方法。 - 配置ViewResolver:用于将控制器方法返回的逻辑视图名映射到实际的视图模板。 - 配置Interceptor:用于拦截请求,在处理请求前或处理请求后进行一些操作,如权限控制、日志记录等。 3. spring-mybatis.xml:这是一个整合Spring和MyBatis框架的配置文件,主要用于配置数据库连接、事务管理、Mapper接口扫描等。其中,常用的配置包括: - 配置数据源:用于连接数据库,设置连接池等。 - 配置事务管理器:用于管理数据库事务,保证事务的一致性和可靠性。 - 配置Mapper接口扫描:用于自动扫描Mapper接口,并将其注册为Spring的Bean。 4. applicationcontext.xml:这是一个Spring框架的核心配置文件,主要用于配置Spring容器中的各种Bean,包括Service、DAO、Interceptor等。其中,常用的配置包括: - 配置Bean:用于定义Spring容器中的各种Bean。 - 配置AOP:用于实现面向切面编程,如事务管理、日志记录等。 - 配置属性文件:用于加载外部的属性文件,如数据库连接信息、邮件服务器信息等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦否

文章对你有用?不妨打赏一毛两毛

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值