2015-06-01 152 views
12

我在Spring Boot應用程序中的Logback上配置有問題。我希望我的consoleAppender看起來像默認的Spring Boot控制檯appender。如何從Spring Boot默認控制檯appender繼承模式?Spring Boot日誌記錄模式

下面是我consoleAppender配置

<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> 
    <layout class="ch.qos.logback.classic.PatternLayout"> 
     <Pattern class="org."> 
      %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 
     </Pattern> 
    </layout> 
</appender> 
+0

也許你應該遵循的問題:配置,你可以在自己的logback-spring.xml配置中使用它的值https://github.com/spring-projects/spring-boot/issues/1788 - 關閉時可能會給你一個解決方案。 –

回答

14

一旦你已經包括在默認

<?xml version="1.0" encoding="UTF-8"?> 
<configuration scan="true"> 
    <!-- use Spring default values --> 
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/> 

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>${CONSOLE_LOG_PATTERN}</pattern> 
      <charset>utf8</charset> 
     </encoder> 
    </appender> 
    … 
</configuration> 
-4
<configuration> 
    <!-- log to console --> 
    <appender name="STDOUT" 
     class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <!-- pattern --> 
      <pattern> 
       %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 
      </pattern> 
     </encoder> 
    </appender> 

    <!-- error --> 
    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>logs/error-today.log</file> 
     <!-- day --> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>logs/error/error-%d{yyyy-MM-dd}.log.gz</fileNamePattern> 
     </rollingPolicy> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
     </encoder> 
     <!-- error filter --> 
     <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
      <level>ERROR</level> 
      <onMatch>ACCEPT</onMatch> 
      <onMismatch>DENY</onMismatch> 
     </filter> 
    </appender> 

    <!-- warn --> 
    <appender name="warnAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>logs/warn-today.log</file> 

     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>logs/warn/warn-%d{yyyy-MM-dd}.log.gz</fileNamePattern> 
     </rollingPolicy> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
     </encoder> 

     <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
      <level>WARN</level> 
      <onMatch>ACCEPT</onMatch> 
      <onMismatch>DENY</onMismatch> 
     </filter> 
    </appender> 

    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>logs/info-today.log</file> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>logs/info/info-%d{yyyy-MM-dd}.log.gz</fileNamePattern> 
     </rollingPolicy> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
     </encoder> 
     <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
      <level>INFO</level> 
      <onMatch>ACCEPT</onMatch> 
      <onMismatch>DENY</onMismatch> 
     </filter> 
    </appender> 


    <root level="INFO"> 
     <appender-ref ref="STDOUT" /> 
     <appender-ref ref="errorAppender" /> 
     <appender-ref ref="warnAppender" /> 
     <appender-ref ref="infoAppender" /> 
    </root> 
</configuration> 
5

它已經有一段時間,因爲這個問題被問,但因爲我自己最近出現了問題,無法找到答案,我開始挖掘深一點,並找到了適合我的解決方案。

我結束了使用調試器,並看看附加到記錄器的默認appender。

我發現是工作的這種模式根據需要對我來說:

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p 18737 --- [%t] %-40.40logger{39} : %m%n%wEx</pattern> 

編輯:該模式是不完全正確的,我看到了一些運行時的數值已經被實例化(在這種情況下,18737 --- )我會查找適當的變量來替代那裏。它確實包含固定長度列的格式,雖然

編輯2:好的,我再看看調試器的內容。 Debugger(eclipse) Logger Contents

所以我最終使用的是ConsoleAppender使用的模式:

%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(18971){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx 

由於可以在這裏看到:

這個你也可以通過查看記錄器實例的內容做自己

Debugger: detailed contents of the encoder pattern

+0

謝謝,在其他答案我添加完整的工作logback.xml與這種模式。它需要spring default.xml中的conversionRules元素才能工作。 –

18

你可以找到defaults.xml中的文件春天的logback啓動控制檯日誌模式:

彈簧引導1.5.0.RELEASE.jar /組織/ springframework的的/ boot /日誌/的logback/defaults.xml中

控制檯模式:

<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}}"/> 
0
<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

    <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" /> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <layout class="ch.qos.logback.classic.PatternLayout"> 
      <Pattern> 
       %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx 
      </Pattern> 
     </layout> 
    </appender> 

    <root level="info"> 
     <appender-ref ref="STDOUT" /> 
    </root> 

</configuration>