java專案日誌配置檔案

蛇啊蛇啊發表於2024-04-30
logback
<!-- name的值是變數的名稱,value的值時變數定義的值。透過定義的值會被插入到logger上下文中。定義後,可以使“${}”來使用變數。 -->
<property name="log.path" value="logs"/>

<!--2. 輸出到文件-->
<!-- 2.1 level為 DEBUG 日誌,時間滾動輸出  -->
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在記錄的日誌文件的路徑及文件名 -->
    <file>${log.path}/debug.log</file>
    <!--日誌文件輸出格式-->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 設定字符集 -->
    </encoder>
    <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 日誌歸檔 -->
        <fileNamePattern>${log.path}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <!--日誌文件保留天數-->
        <maxHistory>15</maxHistory>
    </rollingPolicy>
    <!-- 此日誌文件只記錄debug級別的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>debug</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!-- 2.2 level為 INFO 日誌,時間滾動輸出  -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在記錄的日誌文件的路徑及文件名 -->
    <file>${log.path}/info.log</file>
    <!--日誌文件輸出格式-->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>UTF-8</charset>
    </encoder>
    <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- 每天日誌歸檔路徑以及格式 -->
        <fileNamePattern>${log.path}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <!--日誌文件保留天數-->
        <maxHistory>10</maxHistory>
    </rollingPolicy>
    <!-- 此日誌文件只記錄info級別的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>info</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!-- 2.3 level為 WARN 日誌,時間滾動輸出  -->
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在記錄的日誌文件的路徑及文件名 -->
    <file>${log.path}/warn.log</file>
    <!--日誌文件輸出格式-->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設定字符集 -->
    </encoder>
    <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.path}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <!--日誌文件保留天數-->
        <maxHistory>10</maxHistory>
    </rollingPolicy>
    <!-- 此日誌文件只記錄warn級別的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>warn</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!-- 2.4 level為 ERROR 日誌,時間滾動輸出  -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 正在記錄的日誌文件的路徑及文件名 -->
    <file>${log.path}/error.log</file>
    <!--日誌文件輸出格式-->
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <charset>UTF-8</charset> <!-- 此處設定字符集 -->
    </encoder>
    <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <!--日誌文件保留天數-->
        <maxHistory>10</maxHistory>
    </rollingPolicy>
    <!-- 此日誌文件只記錄ERROR級別的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!--
    <logger>用來設定某一個包或者具體的某一個類的日誌列印級別、
    以及指定<appender>。<logger>僅有一個name屬性,
    一個可選的level和一個可選的addtivity屬性。
    name:用來指定受此logger約束的某一個包或者具體的某一個類。
    level:用來設定列印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
          還有一個特俗值INHERITED或者同義詞NULL,代表強制執行上級的級別。
          如果未設定此屬性,那麼當前logger將會繼承上級的級別。
    addtivity:是否向上級logger傳遞列印資訊。預設是true。
    <logger name="org.springframework.web" level="info"/>
    <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
-->

<!--
    root節點是必選節點,用來指定最基礎的日誌輸出級別,只有一個level屬性
    level:用來設定列印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
    不能設定為INHERITED或者同義詞NULL。預設是DEBUG
    可以包含零個或多個元素,標識這個appender將會新增到這個logger。
-->

<!-- 4. 最終的策略 -->
<!-- 4.1 開發環境:列印控制檯-->
<springProfile>
    <logger name="com.example" level="info"/>
</springProfile>

<root level="info">
    <!--        <appender-ref ref="CONSOLE" />-->
    <!--        <appender-ref ref="DEBUG_FILE" />-->
    <appender-ref ref="INFO_FILE"/>
    <appender-ref ref="WARN_FILE"/>
    <appender-ref ref="ERROR_FILE"/>
</root>

相關文章