1.原理解释
先来了解一下 log4j2中定义的异常级别,从低到高依次是:
ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF
ALL:最低级别,用于打开所有日志记录
Trace:追踪进程,推进程序使用
Debug:颗粒度信息事件,调试程序使用 可以使用Debug 单步运行的级别
info:粗颗粒度事件,突出强调应用运行使用 也是springboot运行 默认输出异常级别
Warn:警告级别,警告可能会出错的数据信息
Error:异常级别,影响程序运行的信息
Fatal:错误级别,会导致程序退出运行的信息
OFF:最高级别,用于关闭所有日志记录
2.项目结构
1.在application.yml或application.properties文件中,定义日志输出级别。这里我采用的是yml配置,注意格式顶格写。我们这里先写logging默认日志级别info
#设置日志输出级别
#com:
# tjetc:info 表示 设置info日志级别 level:表示只对com.tjetc包下类的作用
logging:
level:
com:
tjetc: info
2. 异常输出类MyTest,用于输出异常信息
@SpringBootTest
//生成类对应的logger对象
@Slf4j
//注解调用Slf4j
public class MyTest {
}
3.实现步骤
在测试类中,建立一个异常输出方法,用于打印异常信息,并将日志保存到本地当中
@Test
public void test01(){
Logger logger = LoggerFactory.getLogger(MyTest.class);
logger.trace("我是 trace");
logger.debug("我是 debug");
logger.info("我是 info");
logger.warn("我是 warn");
logger.error("我是 error");
}
这里LoggerFactory.getLogger方法获取了MyTest.class类,并监视这个类中发生的异常
注意:这个类中LoggerFactory要选择slfj
观察结果:日志输出结果有默认info、warn、error三个异常级别,到这里,我们就能看出默认日志输出的类型为info以上的异常级别。
接下来,我们尝试修改springboot默认日志输出异常级别,并将其记录在本地。
首先,我们将application.yml中tjetc的类型,修改为debug,这样我们的日志输出就会在debug这一级别。
然后,我们添加file:path:指定生成文件路径,这样就会在对应路径下生成spring.log日志文件。还有一种方法file:name:可以指定文件生成路径和文件名称。这里我指定spring.log生成在D:temp目录下。
注:这两种方法只能选择一种,yml有严格的缩进要求,书写时注意格式对齐。
#设置日志输出级别
#com:
# tjetc:debug 表示 设置debug日志级别 level:表示只对com.tjetc包下类的作用
logging:
level:
com:
tjetc: debug
#配置日志输出文件位置和名称
file:
# 指定日志文件路径,没有名称,在指定路径下生成spring.log文件
path: D:temp
# 指定生成文件路径和生成文件名称
# name: aa/bb/myTestLog.txt
其次,我们修改Test输出异常类中日志中log对象的生成方式,尝试用一种更简易的方法监控.class类。log是由@Slf4j注解生成的,自动将目标.class注入的方法。
@Test
public void test02(){
// logger 对象 日志信息
// Logger logger= LoggerFactory.getLogger(MyTest.class);
// log是由@SLf4j生成的
log.trace("我是trace");
log.debug("我是debug");
// 默认输出 info以上的错误级别
log.info("我是info");
log.warn("我是warn");
log.error("我是error");
}
观察结果:我们修改了yml默认日志输出类型,并保存到本地文件当中。
总结:
本文讲述两种log的方式实现监控目标类日志异常,并通过在application.yml配置logging:来实现控制日志级别并通过配置file:将日志信息保存到本地。