• 【日志】日志干什么的?日志工厂是什么?log4j 的配置和使用? log4j.properties 文件配置、log4j jar包坐标


    日志

    1 日志工厂

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

    曾经:sout 、 debug

    现在:日志工厂

    https://mybatis.org/mybatis-3/zh/configuration.html#settings

    image-20220727140754384

    • SLF4J simple logging facade for java的缩写,java的简单日志外观

    • LOG4J(3.5.9 起废弃) 【掌握】

    • LOG4J2

    • JDK_LOGGING

    • COMMONS_LOGGING

    • STDOUT_LOGGING 【掌握】

    • NO_LOGGING

    在mybatis中具体使用哪个日志试下,在setting中设定!

    STDOUT_LOGGING 标准日志输出

    image-20220727151508010

    mybaits-config.xml

    <settings>
        
        
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    settings>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2 log4j

    什么是log4j?

    • 是apache的一个开源项目
    • 通过log4j,我们可以控制日志信息输送的目的地是控制台 or 文件内 or GUI组件
    • 可以通过log4j控制每一条日志的输出格式
    • 通过定义每一条日志信息的级别,能够更加细致的控制日志的生产过程
    • 通过一个配置文件来灵活配置,【log4j.properties 】,不需要修改代码

    如何使用log4j?

    1. 导入log4j jar包\

      pom.xml

      
      <dependency>
          <groupId>log4jgroupId>
          <artifactId>log4jartifactId>
          <version>1.2.17version>
      dependency>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    2. 在resources下建立log4j.properties

      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/kuang.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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
    3. 配置log4j为日志的实现

      mybatis-config.xml

      <settings>
          
          <setting name="logImpl" value="LOG4J"/>
      settings>
      
      • 1
      • 2
      • 3
      • 4
    4. Log4j的使用,测试运行findUserById

      UserMapperTest.java

      package com.kuang.dao;
      
      import com.kuang.pojo.User;
      import com.kuang.utils.MyBatisUtils;
      import org.apache.ibatis.session.SqlSession;
      import org.junit.Test;
      
      public class UserMapperTest {
      
          @Test
          public void findUserByIdTest(){
      
              SqlSession sqlSession = MyBatisUtils.getSqlSession();
      
              UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
      
              User user = userMapper.findUserById(2);
      
              System.out.println(user);
      
              sqlSession.close();
      
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24

      测试结果:

      image-20220727154932140

      自动生成了log文件:image-20220727155504289

    简单使用

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

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

      static Logger logger = Logger.getLogger(UserDaoTest.class);
      
      • 1
    3. 日志级别

      logger.info("info:进入了testLog4j方法");
      logger.error("error:进入了testLog4j方法");
      logger.debug("debug:进入了testLog4j方法");
      
      • 1
      • 2
      • 3

    UserMapperTest.java

    package com.kuang.dao;
    
    import com.kuang.pojo.User;
    import com.kuang.utils.MyBatisUtils;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.log4j.Logger;
    import org.junit.Test;
    
    public class UserMapperTest {
    
    
        @Test
        public void findUserByIdTest(){
    
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
    
            //拿到UserMapper对象实例
            Logger logger = Logger.getLogger(UserMapper.class);
            logger.info("测试,进去getUserById方法成功!");
    
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            User user = userMapper.findUserById(2);
            System.out.println(user);
    
            sqlSession.close();
    
        }
    
        @Test
        public void testLog4j(){
            //拿到UserMapper对象实例
            Logger logger = Logger.getLogger(UserMapper.class);
    
            logger.info("info:进入了testLog4j方法");
            logger.error("error:进入了testLog4j方法");
            logger.debug("debug:进入了testLog4j方法");
    
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    kuang.log

    image-20220727160808405

  • 相关阅读:
    MySQL-2-函数和约束
    Azure - 机器学习:创建机器学习所需资源,配置工作区
    数据挖掘——了解数据
    【DRAM存储器十一】SDRAM介绍-各类读操作详解,附带解释了几个重要时序参数
    五、kotlin标准库函数
    在C#中使用Halcon开发视觉检测程序
    Spring系列五:Spring怎么解决循环依赖
    绕圆旋转动画组件,拿过来直接用
    【reverse IDA使用技巧】IDA动态调试Linux_ELF配置+例题:SCUCTF新生赛2021-DebugMe
    两种解法解决LCR 008. 长度最小的子数组【C++】
  • 原文地址:https://blog.csdn.net/MS_SONG/article/details/126017407