1. 程式人生 > >springboot logback配置

springboot logback配置

sprintboot 日誌管理

  • spring boot自帶了log列印功能,使用的是Commons logging 具體可以參考 Spring Boot Log

logback配置

  • logback是log4j的升級版,配置簡單,效能更好,因此使用其作為SpringBoot專案的日誌管理框架,以下為配置流程

1. application.properties中指定logback配置檔案地址

logging.config=classpath:logback.xml

2. 編寫logback配置檔案

  • 可根據註釋,根據需求,更改配置
<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright 2010-2011 The myBatis Team
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
        http://www.apache.
org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
--> <configuration scanPeriod="60 seconds" debug="false"> <!--定義日誌檔案的儲存地址 勿在 LogBack 的配置中使用相對路徑--> <property name="LOG_HOME" value="${user.dir}/logs/"/> <!-- 元件標識 --> <property name="COMPONENT_ID" value="componentName"/> <!-- 段標識 --> <property name="SEGMENT_ID" value="cascade_service"/> <logger name="org.springframework.scheduling"> <level value="info"/> </logger> <!-- 控制檯輸出日誌 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}[%line] - %msg%n</pattern>--> <pattern>%red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{50})[%line] - %cyan(%msg%n)</pattern> </layout> </appender> <appender name="FILE-error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <File>${LOG_HOME}/${COMPONENT_ID}.${SEGMENT_ID}.error.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <FileNamePattern>${LOG_HOME}/${COMPONENT_ID}.${SEGMENT_ID}.error.%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern> <MaxHistory>3</MaxHistory> <maxFileSize>10MB</maxFileSize> <totalSizeCap>100MB</totalSizeCap> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} %level ${COMPONENT_ID}.${SEGMENT_ID} [%thread] [%logger{50}:%line] %msg%n </Pattern> </layout> </appender> <appender name="FILE-warn" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <File>${LOG_HOME}/${COMPONENT_ID}.${SEGMENT_ID}.warn.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <FileNamePattern>${LOG_HOME}/${COMPONENT_ID}.${SEGMENT_ID}.warn.%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern> <MaxHistory>3</MaxHistory> <maxFileSize>10MB</maxFileSize> <totalSizeCap>100MB</totalSizeCap> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} %level ${COMPONENT_ID}.${SEGMENT_ID} [%thread] [%logger{50}:%line] - %msg%n </Pattern> </layout> </appender> <appender name="FILE-info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <File>${LOG_HOME}/${COMPONENT_ID}.${SEGMENT_ID}.info.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <FileNamePattern>${LOG_HOME}/${COMPONENT_ID}.${SEGMENT_ID}.info.%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern> <MaxHistory>3</MaxHistory> <maxFileSize>10MB</maxFileSize> <totalSizeCap>100MB</totalSizeCap> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} %level ${COMPONENT_ID}.${SEGMENT_ID} [%thread] [%logger{50}:%line] - %msg%n </Pattern> </layout> </appender> <!-- 檔案輸出日誌 (檔案大小策略進行檔案輸出,超過指定大小對檔案備份)--> <appender name="FILE-debug" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <File>${LOG_HOME}/${COMPONENT_ID}.${SEGMENT_ID}.debug.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <FileNamePattern>${LOG_HOME}/${COMPONENT_ID}.${SEGMENT_ID}.debug.%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern> <MaxHistory>3</MaxHistory> <maxFileSize>10MB</maxFileSize> <totalSizeCap>100MB</totalSizeCap> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} %level ${COMPONENT_ID}.${SEGMENT_ID} [%thread] [%logger{50}:%line] - %msg%n </Pattern> </layout> </appender> <!-- 日誌輸出級別 --> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE-debug"/> <appender-ref ref="FILE-info"/> <appender-ref ref="FILE-warn"/> <appender-ref ref="FILE-error"/> </root> </configuration>

3. 在springboot中使用

在這裡插入圖片描述

4. 結果

  • 按照配置,將日誌分級別列印
    在這裡插入圖片描述