面试官问我日志是什么?

简介: 日志1. 日志工厂2. LOG4J2.1 先导入LOG4J的包2.2 log4j.properties2.3 配置log4j为日志的实现2.4 log4j的使用3. 简单使用3.1 导包3.2 日志对象3.3 日志级别3.4 测试

1. 日志工厂


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

曾经:sout、debug


现在使用:日志工厂


微信图片_20211230111224.png


  • SLF4J
  • LOG4J 【掌握】
  • LOG4J2
  • JDK_LOGGING
  • COMMONS_LOGGING
  • STDOUT_LOGGING 【掌握】
  • NO_LOGGING


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


STDOUT_LOGGING 标准日志输出


  • 测试:


在mybatis核心配置文件中进行配置


空格也不要有

<settings>
    <!--标准的日志工厂实现-->
    <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

微信图片_20211230111414.png

微信图片_20211230111418.png


2. LOG4J


什么是log4j?


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


2.1 先导入LOG4J的包


<dependencies>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
</dependencies>


2.2 log4j.properties


#将等级为DEBUG的日志信息输出到console和file这两个目的地,
log4j.rootLogger=DEBUG,console,file
# 控制台(console)
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
#文件出书的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File = ./log/hxl.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.PrepareStatement = DEBUG


2.3 配置log4j为日志的实现


<settings>
    <!--标准的日志工厂实现-->
    <setting name="logImpl" value="LOG4J"/>
</settings>


2.4 log4j的使用


直接测试运行。可以和前面的测试对比以下。


微信图片_20211230111636.png


3. 简单使用


3.1 导包


我们在要使用Log4j的类中,导入import org.apache.log4j.Logger;这个包千万别导错


3.2 日志对象


参数为当前类的class


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


3.3 日志级别


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


3.4 测试


import com.hxl.pojo.User;
import com.hxl.util.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Test;
public class UserMapperTest {
    static Logger logger = Logger.getLogger(UserMapperTest.class);
    @Test
    public void testLog4j(){
        logger.info("info:进入了testLog4j方法");
        logger.debug("debug:进入了testLog4j");
        logger.error("error:进入了testLog4j");
    }
}

微信图片_20211230111749.png


我们有了日志对象我们就可以在测试类或者其他地方使用


@Test
public void getUserById(){
    //获得SqlSession对象
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    logger.info("进入了getUserById方法");
    //我们获得到对象,要拿到sql要么去dao拿要么去mapper中拿,但其实都一样
    //下面我们get到他的接口,返回接口类型
    //getMapper 执行sql
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    User user = userMapper.getUserById(1);
    //方式2:直接通过里面的select,根据返回值的来进行。不推荐使用
    //<User> userList = sqlSession.selectList("com.hxl.dao.UserDao.getUserList");
    System.out.println(user);
    //关闭SQLSession
    sqlSession.close();
}
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
面试官:说一下MySQL主从复制的原理?
面试官:说一下MySQL主从复制的原理?
88 0
面试官:说一下MySQL主从复制的原理?
|
8月前
|
设计模式 网络协议 JavaScript
最近面试点记录总结
最近面试点记录总结
|
12月前
|
消息中间件 缓存 NoSQL
面试官:为什么在系统中不推荐双写?
面试官:为什么在系统中不推荐双写?
|
SQL 关系型数据库 MySQL
面试官问:了解Mysql主从复制原理么?我呵呵一笑
搭建Mysql主从同步之前,我们先来说他们之间同步的过程与原理: 同步复制过程 献上一张图,这张图诠释了整个同步过程
|
程序员
5分钟掌握如何做面试官
5分钟掌握如何做面试官
149 0
5分钟掌握如何做面试官
|
SQL 消息中间件 前端开发
103. 面试技巧:面试的时候我只会聊项目,结果就把我挂了
103. 面试技巧:面试的时候我只会聊项目,结果就把我挂了
119 0
103. 面试技巧:面试的时候我只会聊项目,结果就把我挂了
|
运维 监控 Oracle
|
SQL 存储 关系型数据库
面试被问:如何排查慢查询(执行计划)怎么办?愣着干嘛?进来白嫖呀!
面试被问:如何排查慢查询(执行计划)怎么办?愣着干嘛?进来白嫖呀!
127 0
面试被问:如何排查慢查询(执行计划)怎么办?愣着干嘛?进来白嫖呀!
|
缓存 Dubbo 应用服务中间件
面试官:要不我们聊一下“心跳”的设计? (中)
面试官:要不我们聊一下“心跳”的设计? (中)
152 0
面试官:要不我们聊一下“心跳”的设计? (中)
|
Dubbo Java 应用服务中间件
面试官:要不我们聊一下“心跳”的设计? (上)
面试官:要不我们聊一下“心跳”的设计? (上)
117 0
面试官:要不我们聊一下“心跳”的设计? (上)