Mr.chengJQ Spring Boot与Logback的运用

 在开发以及调试过程中,程序员对日志的需求是非常大的,出了什么问题,都要通过日志去进行排查,但是如果日志不清或者杂乱无章,则不利于维护

这边就比较详细的列举几种类型的日志,供大家参考

首先明白logback日志是Spring Boot自带的,不需要引入额外的包

复制代码
            <dependency>                <groupId>ch.qos.logback</groupId>                <artifactId>logback-access</artifactId>                <version>${logback.version}</version>            </dependency>            <dependency>                <groupId>ch.qos.logback</groupId>                <artifactId>logback-classic</artifactId>                <version>${logback.version}</version>            </dependency>            <dependency>                <groupId>ch.qos.logback</groupId>                <artifactId>logback-core</artifactId>                <version>${logback.version}</version>            </dependency>
复制代码

点进pom里的核心依赖,就能看见上面几个,是由Spring Boot自动依赖配置好的,我们只要直接使用就好了

比较简单的是直接在application的配置文件里 写参数配置就行了,他提供了日志级别,日志输出路径等,也能满足基本的日志输出

我们这通过xml文件进行配置 logback-spring.xml

这样就能直接引用到xml了,但是为什么能引用到了

就是在logback里有个默认的机制,内部会有几种标准的文件格式,在LogbackLoggingSystem里标注了

复制代码
@Override     protected String[] getStandardConfigLocations() {         return new String[] { "logback-test.groovy", "logback-test.xml", "logback.groovy",                 "logback.xml" };     }
复制代码

所以最为标准的为这里面的四种文件格式,但是如果项目中没有,他还提供了扩展文件格式 就是在后面拼上-spring,例如logback.xml 扩展为logback-spring.xml

ok

下面看下xml里面的内容:

复制代码
<?xml version="1.0" encoding="UTF-8"?><configuration debug="false">    <!--定义日志文件的存储地址 可以在LogBack 的配置中使用相对路径-->    <property name="LOG_HOME" value="logs" />        <!-- 彩色日志 -->    <!-- 彩色日志依赖的渲染类 -->    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />    <conversionRule conversionWord="wEx"                     converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />    <!-- 彩色日志格式 -->    <property name="CONSOLE_LOG_PATTERN"               value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />    <!-- Console 输出设置 -->    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">        <encoder>            <pattern>${CONSOLE_LOG_PATTERN}</pattern>            <charset>utf8</charset>        </encoder>    </appender>    <!-- 按照每天生成日志文件 -->    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!--日志文件输出的文件名-->            <FileNamePattern>${LOG_HOME}/category-server-log.%d{yyyy-MM-dd}.log</FileNamePattern>            <!--日志文件保留天数-->            <MaxHistory>30</MaxHistory>        </rollingPolicy>        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>        </encoder>        <!--日志文件最大的大小         <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">            <MaxFileSize>10MB</MaxFileSize>        </triggeringPolicy>-->        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>WARN</level>            <onMatch>DENY</onMatch>            <onMismatch>NEUTRAL</onMismatch>        </filter>        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>ERROR</level>            <onMatch>DENY</onMatch>            <onMismatch>NEUTRAL</onMismatch>        </filter>    </appender>    <!-- 出错日志 appender  -->    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!-- 按天回滚 daily -->            <!-- log.dir 在maven profile里配置 -->            <FileNamePattern>${LOG_HOME}/category-server-error-log.%d{yyyy-MM-dd}.log</FileNamePattern>            <!-- 日志最大的历史 60天 -->            <maxHistory>60</maxHistory>        </rollingPolicy>        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">            <level>WARN</level>        </filter>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>        </encoder>    </appender>        <!-- 自己打印的日志文件,用于记录重要日志信息 -->    <appender name="MY_INFO_FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">            <!--日志文件输出的文件名-->            <FileNamePattern>${LOG_HOME}/category-server-myinfo-log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>            <!--日志文件保留天数-->            <MaxHistory>15</MaxHistory>            <!--日志文件最大的大
                    
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信