springboot整合logback保存日誌到文件

SpringBoot整合了許多的日誌框架,你可能不知道的到底應該選用哪個,但是SpringBoot爲你考慮了,就用它默認的配置就OK,而它默認使用的就是LogBack。

在springboot的resources目錄下新建logback-spring.xml或者logback.xml,兩種保存方式,

 

第一種不分級保存,所有的日誌都保存在同一個文件

 

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 屬性定義 -->
    <!--日誌保存路勁-->
    <property name="LOG_HOME" value="./logs"/>
    <property name="appName" value="ERP_BOOT"/>
    <property name="maxHistory" value="90"/>
    <property name="logImpl" value="STDOUT"/>

    <!-- 控制檯輸出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <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>
    </appender>


    <!-- 日誌 -->
    <!-- 滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其他文件 RollingFileAppender-->
    <appender name="MyLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 過濾器,記錄「所有」級別的日誌 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 滾動策略: 時間 和 大小 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/Log-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
            <maxFileSize>256MB</maxFileSize>
            <maxHistory>${maxHistory}</maxHistory>
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-5level %logger{50}\(%F %L\) -%msg%n</pattern>
        </encoder>
    </appender>



    <logger name="org.springframework" level="info"/>
    <!--myibatis log configure-->
    <logger name="java.sql" level="DEBUG"/>
    <logger name="com.apache.ibatis" level="DEBUG"/>
    <logger name="com.mysql.jdbc" level="DEBUG"/>
    <logger name="com.example.demo.mapper" level="DEBUG"/>


    <!-- 根日誌,所有日誌appender都必須包含在root/logger中,否則不會起作用 -->
    <root level="info">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="MyLOG"/>
    </root>
</configuration>

第二種把info,debug,error分開保存在不同文件 

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 屬性定義 -->
    <!--日誌保存路勁-->
    <property name="LOG_HOME" value="./logs"/>
    <property name="appName" value="ERP_BOOT"/>
    <property name="maxHistory" value="90"/>

    <!-- ConsoleAppender 控制檯輸出日誌 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 對日誌進行格式化 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-5level %logger{50}\(%F %L\) -%msg%n</pattern>
        </encoder>
    </appender>


    <!-- DEBUG日誌 -->
    <!-- 滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其他文件 RollingFileAppender-->
    <appender name="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>
        <!-- 滾動策略: 時間 和 大小 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/debug/debugLog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
            <maxFileSize>256MB</maxFileSize>
            <maxHistory>${maxHistory}</maxHistory>
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-5level %logger{50}\(%F %L\) -%msg%n</pattern>
        </encoder>
    </appender>

    <!-- INFO級別日誌 -->
    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 過濾器,只記錄「INFO」級別的日誌 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/info/infoLog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
            <maxFileSize>256MB</maxFileSize>
            <maxHistory>${maxHistory}</maxHistory>
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-5level %logger{50}\(%F %L\) -%msg%n</pattern>
        </encoder>
    </appender>

    <!-- WARN級別日誌 -->
    <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 過濾器,只記錄「WARN」級別的日誌 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/warn/warnLog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
            <maxFileSize>256MB</maxFileSize>
            <maxHistory>${maxHistory}</maxHistory>
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-5level %logger{50}\(%F %L\) -%msg%n</pattern>
        </encoder>
    </appender>

    <!-- ERROR級別日誌 -->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 過濾器,只記錄「ERROR」級別的日誌 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/error/errorLog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
            <maxFileSize>256MB</maxFileSize>
            <maxHistory>${maxHistory}</maxHistory>
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-5level %logger{50}\(%F %L\) -%msg%n</pattern>
        </encoder>
    </appender>


    <logger name="org.springframework" level="info"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    <!--    自己項目的mapper 路徑-->
    <logger name="com.example.demo.mapper" level="DEBUG"/>


    <!-- 根日誌,所有日誌appender都必須包含在root/logger中,否則不會起作用 -->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="DEBUG"/>
        <appender-ref ref="INFO"/>
        <appender-ref ref="WARN"/>
        <appender-ref ref="ERROR"/>
    </root>
</configuration>

 

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