[⽇志框架]springboot中使⽤的log框架
SpringBoot中的Log
springboot框架在企业中的使⽤越来越普遍,springboot⽇志也是开发中常⽤的⽇志系统。springboot默认就是使⽤SLF4J作为⽇志门⾯,logback作为⽇志实现来记录⽇志。
SpringBoot中的⽇志设计
springboot中的⽇志
<dependency>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</dependency>
依赖关系图
总结:
1. springboot 底层默认使⽤logback作为⽇志实现。
2. 使⽤了SLF4J作为⽇志门⾯
3. 将JUL也转换成slf4j
4. 也可以使⽤log4j2作为⽇志门⾯,但是最终也是通过slf4j调⽤logback
SpringBoot⽇志使⽤
@SpringBootTest
class SpringbootlogApplicationTests {
public static final Logger LOGGER =
@Test
void contextLoads(){
<("error");
LOGGER.warn("warn");
LOGGER.info("info");
LOGGER.debug("debug");
/
/ 默认输出了info级别以上的信息
}
}
使⽤application.properties配置⽇志
使⽤application.properties直接配置⽇志信息,这种⽅式有很⼤的局限性不常⽤。
# ⾃定义⽇志⽬录=级别
logging.level.leex=trace
#在控制台输出的⽇志的格式同logback
sole=%d{yyyy-MM-dd} [%thread][%-5level]%logger{50}-%msg%n
#指定⽂件中⽇志输出的格式
# logging.file.name=D:/logs/springboot.log
logging.pattern.file=%d{yyyy-MM-dd}[%thread]%-5level%logger{50}-%msg%n
指定⽇志配置
给类路径下放上每个⽇志框架⾃⼰的配置⽂件;SpringBoot就不使⽤默认配置的了
⽇志框架配置⽂件
l , l
JUL logging.l:直接就被⽇志框架识别了,l由SpringBoot识别配置
直接将配置⽂件放⼊ resource ⽬录下,配置信息见对应⽇志框架详解
使⽤SpringBoot解析⽇志配置
下⽂l配置,注意springProfile包裹的部分就是指定环境才会⽣效的配置代码
<springProfile name="dev">
······
</springProfile>
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="pattern"value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] -------- %m %n"/>
<!--控制台⽇志输出的 appender-->
<appender name="console"class="ch.ConsoleAppender">
<!--控制输出流对象默认 System.out 改为 -->
<target&</target>
<!--⽇志消息格式配置-->
<encoder class="ch.qos.der.PatternLayoutEncoder">
<springProfile name="dev">
<pattern>${pattern}</pattern>
</springProfile>
<springProfile name="pro">
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] xxxxxxxx %m %n</pattern>
</springProfile>
</encoder>
</appender>
<!--⾃定义 looger 对象
additivity="false" ⾃定义 logger 对象是否继承 rootLogger
-->
springboot框架是干嘛的<springProfile name="dev">
<logger name="com.leex"level="info"additivity="false">
<appender-ref ref="console"/>
</logger>
</springProfile>
<springProfile name="pro">
<logger name="com.leex"level="error"additivity="false">
<appender-ref ref="console"/>
</logger>
</springProfile>
</configuration>
测试
application.properties 中 配置 spring.profiles.active=dev ⽇志:
[ERROR] 2021-03-09 21:50:04.808 com.leex.springbootlog.SpringbootlogApplicationTests contextLoads 16 [main] -------- error [WARN ] 2021-03-09 21:50:04.809 com.leex.springbootlog.SpringbootlogApplicationTests contextLoads 17 [main] -------- warn [INFO ] 2021-03-09 21:50:04.809 com.leex.springbootlog.SpringbootlogApplicationTests contextLoads 18 [main] -------- info
application.properties 中 配置 spring.profiles.active=pro ⽇志:
[ERROR] 2021-03-09 21:47:35.023 com.leex.springbootlog.SpringbootlogApplicationTests contextLoads 16 [main] xxxxxxxx error 将⽇志切换为log4j2
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!--排除logback-->
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加log4j2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
去掉
<dependency>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</dependency>
测试:
<?xml version="1.0" encoding="UTF-8"?>
<!--
status="warn" ⽇志框架本⾝的输出⽇志级别
monitorInterval="5" ⾃动加载配置⽂件的间隔时间,不低于 5 秒
-->
<Configuration status="debug"monitorInterval="5">
<properties>
<property name="LOG_HOME">src/main/java/com/leex/logs</property>
</properties>
<!--⽇志处理-->
<Appenders>
<!--⽇志⽂件输出 appender-->
<File name="file"fileName="${LOG_HOME}/myfile.log">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %m%n"/> </File>
</Appenders>
<!--logger 定义-->
<Loggers>
<!--⾃定义异步 logger 对象
includeLocation="false" 关闭⽇志记录的⾏号信息,会影响性能
additivity="false" 不在继承 rootlogger 对象
-->
<AsyncLogger name="com.leex"level="trace"includeLocation="false"additivity="false">
<AppenderRef ref="file"/>
</AsyncLogger>
<!--使⽤ rootLogger 配置⽇志级别 level="trace"-->
<Root level="trace">
<!--指定⽇志使⽤的处理器-->
<AppenderRef ref="file"/>
</Root>
</Loggers>
</Configuration>
<!--使⽤ rootLogger 配置⽇志级别 level="trace"--> <Root level="trace">
<!--指定⽇志使⽤的处理器-->
<AppenderRef ref="file" />
</Root>
</Loggers>
```
⽇志输出到⽂件中
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论