logback.xml 配置

獲取spring中的環境

<springProperty scope="context" name="attr.value" source="spring.attr.value" defaultValue="default"/>

控制檯打印

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    <charset>UTF-8</charset>
    </encoder>
</appender>

RollingFile 寫入日誌文件

<appender name="XXX_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logging.path}/xxx.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <fileNamePattern>${logging.path}/xxx-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <maxFileSize>100MB</maxFileSize>
        <maxHistory>30</maxHistory>
        <totalSizeCap>10GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
        <pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>UTF-8</charset>
    </encoder>
</appender>

區分環境

<springProfile name="prod,release">
    <logger name="com.xxx"/>
    <logger name="com.xxx.xxx" level="WARN" additivity="false">
        <appender-ref ref="TIMER_APPENDER"/>
        <appender-ref ref="STDOUT"/>
    </logger>
</springProfile>

logger的做用

定義一個日誌執行者,用來設置某一個包或者具體的某一個類的日誌打印級別、以及指定 appender-refspring

  • name:一個包名或者一個確切的類名
  • level:級別
  • addtivity: 是否向上級loger傳遞打印信息, 默認是true。當爲false時,別是不想上傳遞,能夠起到避免重複打印日誌的做用

模塊化日誌

在實際項目中有不少狀況下須要區分業務模塊來寫入不一樣的日誌文件,而不是隨着其餘日誌混爲一談,尤爲是日誌具備價值的時候,例如埋點日誌,若是都寫在同一個文件裏面,那麼可讀性不好,因此須要把日誌區分出來。sql

舉例說明,例如想把數據的sql日誌統一寫道一個日誌文件中:app

<appender name="DATABASE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_PATH}/db.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <fileNamePattern>${LOG_PATH}/db-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <maxFileSize>100MB</maxFileSize>
        <maxHistory>60</maxHistory>
        <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
        <pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        <charset>UTF-8</charset>
    </encoder>
</appender>
<!-- 而後還須要再looger裏面引用 -->
<springProfile name="release">
    <logger name="xxx.mapper" level="DEBUG" additivity="false">
        <appender-ref ref="DATABASE"/>
    </logger>
</springProfile>

root的意義

root 其實也是一個logger, 只不過是根級的logger, 也就是任意包都會執行,也就是若是不配置logger的時候,所有日誌默認都會走他,或者在logger不配置appender-ref的時候,會繼承root的appender-ref。模塊化

相關文章
相關標籤/搜索