我正在使用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
答案 0 :(得分:7)
将log.pattern的值更改为
"%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level [%logger{0}] %msg%n%ex"
注意:%n和%ex之间没有空格。
答案 1 :(得分:6)
实际上,我认为在换行符(%n)之后和异常之前的空间(%ex)。由于您正在显示的任何输出中没有例外,并且您没有在异常后添加新行,它会打印您的信息,换行符,空格,空字符串,然后再次打印您的信息。
我想知道如果%ex输出不等于空字符串,则logback会自动添加换行符。
答案 2 :(得分:1)
您的log.pattern中有%n
,它会为您提供换行符。尝试:
<property name="log.pattern" value="%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level [%logger{0}] %msg %ex"/>