SpringBoot集成slf4j⽇志配置
前⾔
1、slf4j概述
2、l的⽇志依赖
3、l的⽇志配置
4、l配置⽂件定义
5、l配置⽂件解析
5.1 定义⽇志的存储路径
5.2 定义⽇志的输出格式
5.3 定义控制台输出
5.4 定义⽇志相关参数
5.5 定义⽇志的输出级别
6、测试⽇志输出
7、⼩结
前⾔
⽇志,作为⼀个应⽤系统的重要部分,然⽽并不会在项⽬预研或需求设计阶段就作为⼀个功能模块单独规划设计,但这丝毫不影响它在任何⼀个系统中的重要的地位。
为了保证服务的⾼可⽤,及时发现问题,迅速解决问题等诉求,所以⽣产环境⼀旦出现问题,预警系统就会通过邮件、短信甚⾄电话的⽅式实施多维轰炸模式,确保相关负责⼈不错过每⼀个可能的bug。
预警系统判断疑似bug⼤部分源于⽇志。⽐如某个微服务接⼝由于各种原因导致频繁调⽤出错,此时调⽤端会捕获这样的异常并打印ERROR级别的⽇志,当该错误⽇志达到⼀定次数出现的时候,就会触发报警。
其次,在以往项⽬开发过程中,我们往往习惯性使⽤System.out.println()这个常⽤的打印输出语句来显⽰断点信息或业务运⾏对象信息或控制台⽇志记录,其实⼤量的使⽤System.out.println()在⼀定程度上会增加资源的消耗。Java⽇志框架众多,常⽤的有
java.util.logging,log4j,logback,commons-logging等等。⽽且SpringBoot 提供了⼀套⽇志系统,logback是最优的选择。因此本⽂根据实际项⽬中使⽤slf4j 的logback来输出⽇志,效率很⾼。
⽇志的重要性,不⾔⽽喻。
OK,接下来,本⽂主要总结⼀下项⽬中⽬前使⽤的SpringBoot集成slf4j⽇志配置。
1、slf4j概述
slf4j,即(Simple Logging Facade for Java,简单门⾯⽇志)。它是对所有⽇志框架制定的⼀种规范、标准、接⼝,并不是⼀个框架的具体的实现,它只服务于各种各样的⽇志系统。
slf4j提供了统⼀的记录⽇志的接⼝,对不同⽇志系统的具体实现进⾏了抽象化,只要按照其提供的⽅法记录即可,最终⽇志的格式、记录级别、输出⽅式等通过绑定具体的⽇志系统来实现。在项⽬中使⽤了slf4j记录⽇志,并且绑定了l中配置了相应的jar包依赖),则⽇志会以log4j的风格输出;后期需要改为以logback的风格输出⽇志,只需要将jar包log4j替换成logback即可,根本不需要修改⽇志⽂件的代码。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义变量-->
<springProperty scope="context" name="APP_NAME" source="spring.application.name"/>spring boot选择题
<springProperty scope="context" name="APP_PORT" source="server.port"/>
<springProperty scope="context" name="LOG_FILE_PATH" source="app.logPath"/>
<!--    <property name="LOCAL_TEST_FILE_PATH" value="${LOG_FILE_PATH}/${APP_NAME}/${APP_PORT}"/>-->
<!-- ⽂件输出格式 -->
<property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger{36}[%L] - %msg%n"/>
<!--定义⽇志⽂件位置-->
<property name="LOG_HOME" value="D:\demoworkspace\sunny_redis\log"/>
<!--定义⽇志⽂件位置获取配置⽂件形式-->
<!--    <property name="LOG_HOME" value="${LOG_FILE_PATH}/${APP_NAME}/${APP_PORT}"/>-->
<!--springProfile 配置具体环境-->
<!--开发环境-->
<springProfile name="dev">
<appender name="CONSOLE"class="ch.ConsoleAppender">
<encoder>
<pattern>${PATTERN}</pattern>
</encoder>
</appender>
<!--⽇志输出级别-->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
<!--测试环境-->
<springProfile name="dev,test">
<appender name="FILE"
class="ch.olling.RollingFileAppender">
<Prudent>ture</Prudent>
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}-%i.log</FileNamePattern>                <MaxHistory>10</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy
class="ch.olling.SizeAndTimeBasedFNATP">
<MaxFileSize>20MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${PATTERN}</pattern>
</layout>
</appender>
<!--⽇志输出级别-->
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</springProfile>
</configuration>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。