在springCloud中使用logback,實現日誌輸出,(踩坑)

springboot自己集成了logback,因此無需引入依賴;spring

在resources下創建logback.xml文件,內容以下springboot

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

<configuration scan="true" scanPeriod="60 seconds"
               debug="false">
    <!-- scan: 當此屬性設置爲true時,配置文件若是發生改變,將會被從新加載,默認值爲true。 scanPeriod: 設置監測配置文件是否有修改的時間間隔,若是沒有給出時間單位,默認單位是毫秒。當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘。
        debug: 當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false -->

    <!-- 應用名稱 -->
    <property name="app_name" value="tzgServiceUser" />

    <!--日誌文件的保存路徑,首先查找系統屬性-Dlog.dir,若是存在就使用其;不然,在當前目錄下建立名爲logs目錄作日誌存放的目錄 -->
    <property name="log_home" value="${log.dir:-logs}/${app_name}" />

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

    <property name="warn_pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg %n" />

    <property name="error_pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg %n" />

    <contextName>${app_name}</contextName>

    <!-- 信息輸出到文件 -->
    <appender name="warn"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/info/%d{yyyy-MM-dd}.log
            </fileNamePattern>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${warn_pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
    </appender>

    <!-- 錯誤輸出到文件 -->
    <appender name="error"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/error/%d{yyyy-MM-dd}.log
            </fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${error_pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
    </appender>

    <root>
        <level value="INFO" />
        <appender-ref ref="warn" />
        <appender-ref ref="error" />
    </root>

</configuration>

啓動項目會自動生成log:app

注意: 千萬注意:一開始我看網上的不少博客說的將配置文件名字設爲 logback-spring,項目啓動不了!以下所示!因此小夥伴們千萬注意了不要迷信網上的,實踐出真知!ide

追加:能夠使用logback-spring!在application.xml配置文件中指定便可:spa

logging:
  config:
    classpath: logback-spring.xml

追加:配置完上面可能有人會有疑問,ide控制檯怎麼沒有日誌輸出了?由於咱們上面的配置文件中尚未配置 console(控制檯):線程

在上面logback-spring.xml中添加一個appender,name爲"CONSOLE":debug

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--此日誌appender是爲開發使用,只配置最底級別,控制檯輸出的日誌級別是大於或等於此級別的日誌信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>info</level>
</filter>
<encoder>
    <Pattern>${console_pattern}</Pattern>
    <!-- 設置字符集 -->
    <charset>UTF-8</charset>
</encoder>
</appender>
將原來的<property name="console_pattern" value="%-5level \t %d{yyyy-MM-dd HH:mm:ss.SSS} \t %msg \t [%thread] \t %logger{80}%n" />(這個是黑白的,無感)
替換爲<property name="console_pattern"
          value="[%highlight(%-5level)]%green([%date{yyyy-MM-dd HH:mm:ss}]) %boldMagenta([%thread-%logger{96}-%mdc{client}-%line line])  - %cyan(%msg%n)"/>(這個是輸出帶彩色的格式,看起來酷炫一點,習慣一些)

最後在root中添加以下一行,使console配置起效日誌

<appender-ref ref="CONSOLE" />

效果圖以下:code

相關文章
相關標籤/搜索