面试官问我日志是什么?
2023-09-11 14:20:20 时间
日志
1. 日志工厂
如果一个数据库操作出现了异常,我们需要排错,日志就是最好的助手。
曾经:sout、debug
现在使用:日志工厂
- SLF4J
- LOG4J 【掌握】
- LOG4J2
- JDK_LOGGING
- COMMONS_LOGGING
- STDOUT_LOGGING 【掌握】
- NO_LOGGING
在mybatis中具体使用哪一个日志实现,在设置中设定
STDOUT_LOGGING 标准日志输出
-
测试:
在mybatis核心配置文件中进行配置
空格也不要有
<settings> <!--标准的日志工厂实现--> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings>
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的使用
直接测试运行。可以和前面的测试对比以下。
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");
}
}
我们有了日志对象我们就可以在测试类或者其他地方使用
@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 禁止国外 IP 访问网站,我直接凉凉!
- 三行代码实现发布订阅,让面试官虎躯微微一震
- 面试官:有了for循环 为什么还要forEach?
- 面试官:Handler内存泄露的原因是什么?我:就这?
- 面试官:说一下Jena推理
- 面试官:Java中线程是按什么顺序执行的?
- 面试官:你对Redis缓存了解吗?面对这11道面试题是否有很多问号?
- 【华为机试真题 Python实现】最少面试官数【2022 Q1 Q2 |200分】
- 面试官:讲讲Redis的五大数据类型?如何使用?(内含完整测试源码)
- 【高并发】关于线程池,蚂蚁金服面试官问了我这些内容!!
- 【Spring注解驱动开发】如何使用@Value注解为bean的属性赋值,我们一起吊打面试官!
- 【Spring注解驱动开发】面试官再问你BeanPostProcessor的执行流程,就把这篇文章甩给他!
- 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
- 测试面试13问,一分钟搞定面试官攻略
- 2020年全网最全的自动化测试面试题及答案--吊打面试官就靠它了!| 最新版
- 软件测试面试,8年测试老兵竟被面试官10分钟pass,这也太难了吧