【问题标题】:Why is there a space at the beginning of each line of my Logback-generated log file?为什么我的 Logback 生成的日志文件的每一行开头都有一个空格?
【发布时间】:2012-02-28 05:41:33
【问题描述】:

我正在使用 Logback 进行日志记录。在第一行之后的每一行的开头是一个空格。知道为什么吗?

下面是我的 logback.xml:

<?xml version="1.0" encoding="utf-8"?>
<configuration debug="true">

  <property name="log.pattern" value="%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level [%logger{0}] %msg%n %ex"/>

  <property name="log.file.prefix" value="${app.home}/var/log/${app.name}"/>

  <appender name="DEFAULT" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.file.prefix}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.file.prefix}.%d{yyyyMMdd}.%i.log.zip</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>500MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
          <Pattern>${log.pattern}</Pattern>
    </encoder>
  </appender>

  <!-- info for everything else -->
  <root level="info">
    <appender-ref ref="DEFAULT"/>
  </root>
</configuration>

这会产生如下的日志输出(注意第一行没有空格):

2012/02/06 13:34:09.875 INFO  [BrokerService] Using Persistence Adapter: MemoryPersistenceAdapter
 2012/02/06 13:34:09.875 INFO  [BrokerService] ActiveMQ 5.3.1 JMS Message Broker (localhost) is starting
 2012/02/06 13:34:09.875 INFO  [BrokerService] For help or more information please see: http://activemq.apache.org/
 2012/02/06 13:34:09.953 INFO  [ManagementContext] JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
 2012/02/06 13:34:10.328 INFO  [BrokerService] ActiveMQ JMS Message Broker (localhost, ID:NZucker-NYL-3937-1328553250062-0:0) started
 2012/02/06 13:34:10.343 INFO  [TransportConnector] Connector vm://localhost Started

【问题讨论】:

    标签: java logback pattern-layout


    【解决方案1】:

    将log.pattern的值改为

     "%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level [%logger{0}] %msg%n%ex"
    

    注意:%n 和 %ex 之间没有空格。

    【讨论】:

    • 很高兴作者同意我的评价!
    【解决方案2】:

    实际上,我认为它是在换行符 (%n) 之后和异常 (%ex) 之前的空格 。由于您显示的任何输出中都没有异常,并且您没有在异常之后添加新行,因此它会打印您的信息、换行符、空格、空字符串,然后再次打印您的信息。

    我想知道如果它不等于空字符串,logback 是否会在 %ex 输出之后自动添加一个换行符。

    【讨论】:

      【解决方案3】:

      您的 log.pattern 中有一个%n,它为您提供换行符。试试:

      <property name="log.pattern" value="%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level [%logger{0}] %msg %ex"/>
      

      图案布局信息:http://logback.qos.ch/manual/layouts.html

      【讨论】:

        猜你喜欢
        • 2020-05-30
        • 2015-10-23
        • 1970-01-01
        • 2018-01-19
        • 2016-08-16
        • 1970-01-01
        • 1970-01-01
        • 2019-12-16
        • 2020-11-26
        相关资源
        最近更新 更多