2015-06-01 116 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>