springboot2.0 @Slf4j log 日誌配置 輸出到文件 彩色日誌

今天做了個日誌記錄:

解決問題:

使用了springboot原生自帶的一個log框架 

POM添加一個插件(不然使用不了@Slf4j註解):

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
            <scope>provided</scope>
</dependency>

然後就是添加一個lombok插件 (我使用的是IDEA, 其他的IDA可以自行搜索安裝方法)

直接按快捷鍵Ctrl+Alt+s彈出Settings界面



因爲我的已經安裝了 如果沒有安裝的話右邊會出現一個Install綠色按鈕 點擊安裝即可 ,最後提示一下 安裝成功之後一定要重啓軟件

工具準備好之後就是一個配置了:在項目中的resource下新建一個logback-spring.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="10 seconds">

    <contextName>logback</contextName>


    <!-- 格式化輸出:%date表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度 %msg:日誌消息,%n是換行符-->
    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />

    <!-- 定義日誌存儲的路徑,不要配置相對路徑 -->
    <property name="FILE_PATH" value="D:/Desktop/log/spring-log.%d{yyyy-MM-dd}.%i.log" />

    <!-- 控制檯輸出日誌 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 日誌級別過濾INFO以下 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <!-- 按照上面配置的LOG_PATTERN來打印日誌 -->
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--每天生成一個日誌文件,保存30天的日誌文件。rollingFile用來切分文件的 -->
    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <fileNamePattern>${FILE_PATH}</fileNamePattern>

            <!-- keep 15 days' worth of history -->
            <maxHistory>30</maxHistory>

            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 日誌文件的最大大小 -->
                <maxFileSize>2MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>

            <!-- 超出刪除老文件 -->
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>

        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- project default level -->
    <logger name="net.sh.rgface.serive" level="ERROR" />

    <!-- 日誌輸出級別 -->
    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="rollingFile" />
    </root>
</configuration>

配置文件有很豐富的擴展,有興趣可以搜索一下

配置完成之後差不就可以了

最後就是使用:

在使用的類上方添加@Slf4j註解,在使用時log.info()、log.error()、log.warn()等

運行項目之後會發現之前的日誌打印在控制檯上的是彩色,現在的都是白色了:其實也很好理解,因爲配置文件上面輸出的級別是INFO,就是說在INFO以上的都會被打印,就像是System.out.print()輸出一樣,輸出的都是白色的。如果需要彩色日誌的話可以修改一下logback-spring.xml文件,在<contextName>logback</contextName>下添加:

    <!-- 彩色日誌 -->
    <!-- 彩色日誌依賴的渲染類 -->
    <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_LOG_PATTERN

修改爲:注意修改的位置紅色部分

    <!-- 控制檯輸出日誌 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 日誌級別過濾INFO以下 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <!-- 按照上面配置的LOG_PATTERN來打印日誌 -->
            <pattern>${LOG_PATTERN}</pattern> //替換爲${CONSOLE_LOG_PATTERN}
        </encoder>
    </appender>

在運行控制檯上沒有錯就會出現彩色日誌了

注:有問題可以評論哦 我看到就會回覆,有錯誤希望指出 謝謝


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章