为什么log4j在stdout附加程序中打印新的换行符?

我的log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config">
    <Appenders>
        <File name="FILE" fileName="<<FILEPATH>>\logfile.log"
            append="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5p | %l - %m%n" />
        </File>
        <File name="UIFILE" fileName="<<FILEPATH>>\uilogfile.log"
            append="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} | %m%n" />
        </File>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout>
                <pattern>[%-5p] %C{2} - %m%n</pattern>
            </PatternLayout>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="org.apache.log4j.xml" level="INFO"/>
        <Logger name="com.foo" level="DEBUG" />
        <Logger name="com.foo.services.web.controllers.FOOLoggingController"
            level="INFO">
            <AppenderRef ref="UIFILE" />
        </Logger>
        <Root>
            <AppenderRef ref="STDOUT" />
            <AppenderRef ref="FILE" />
        </Root>
    </Loggers>
</Configuration>


一切正常,但是我在输出之间换行了,不知道为什么!

java - log4j2在stdout之间打印新行-LMLPHP

我尝试了一些操作,例如从模式布局中删除%n,但是当我这样做时,日志本身就停止了。文件输出是好的。它不会在两者之间打印新行。有人遇到过类似的问题吗?

最佳答案

我通过在控制台的模式字符串内用%n替换\n解决了此问题。因此,控制台附加程序看起来像:

<Console name="STDOUT" target="SYSTEM_OUT">
   <PatternLayout pattern ="[%-5p] %C{2} - %m \n" />
</Console>

07-24 20:25