Java 带空行的Wildfly和logback

Java 带空行的Wildfly和logback,java,wildfly,logback,wildfly-9,Java,Wildfly,Logback,Wildfly 9,我正在尝试使用Wildfire 9的Logback。为此,我在WEB-INF文件夹中添加了一个jboss-deployment-structure.xml文件,其中包含以下内容(我还排除了Hibernate,以确保不拉jboss日志): 以及: 在我的logback.xml中,我将此模式用于控制台: <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <layout class="c

我正在尝试使用Wildfire 9的Logback。为此,我在WEB-INF文件夹中添加了一个jboss-deployment-structure.xml文件,其中包含以下内容(我还排除了Hibernate,以确保不拉jboss日志):

以及:

在我的logback.xml中,我将此模式用于控制台:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern><![CDATA[%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} -%msg%n]]></Pattern>
    </layout>
</appender>
我认为问题出在ConsolePender和PatternFormatter的%n上。如果我试图删除ConsolePender的%n,就好像我没有刷新一样:我看不到日志。如果我删除PatternFormatter的%N,我没有空行,但是Wildfly的日志不再有直线进给。


如何在没有空行的情况下保持干净?

因为WildFly在记录器中同时包装了
System.out
System.err
,如果使用
控制台上的图案,这将导致打印两个行分隔符。您可以尝试从
控制台pender
中删除
%n
格式,并使用
immediateFlush=true
选项,也可以创建另一个不会打印行分隔符的
控制台处理程序
,并将其分配给
stdout

对于后面的部分,这里有一些CLI命令可以实现这一点

/subsystem=logging/pattern-formatter=stdout-pattern:add(pattern="%s")
/subsystem=logging/console-handler=stdout-console:add(autoflush=true, named-formatter=stdout-pattern, target=System.out)
/subsystem=logging/logger=stdout:add(handlers=[stdout-console], use-parent-handlers=false)

这些命令添加了一个只打印传入消息的模式(因为它是通过logback
ConsoleAppender设置格式的,这应该可以工作)。然后创建一个新的
控制台处理程序
,该处理程序使用该模式。最后添加一个名为
stdout
的记录器,并将处理程序分配给它。

我已经删除了standalone.xml中的%n,现在Eclipse控制台中的日志正常了

<formatter name="COLOR-PATTERN">
    <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e"/>
</formatter>


您是否尝试过从模式中删除
%n
,并在
控制台上使用
立即刷新
?谢谢您的回复。与
FileAppender
一起使用的
PatternLayoutCoder
存在
immediateFlush
,而不是
ConsolePender
。奇怪的是,这只发生在Windows上。Wildfly可能吃不下CRLF这个解决方案对我有效。现在JBoss7.3日志在Eclipse控制台中没有空行。
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern><![CDATA[%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} -%msg%n]]></Pattern>
    </layout>
</appender>
formatter.COLOR-PATTERN=org.jboss.logmanager.formatters.PatternFormatter
formatter.COLOR-PATTERN.properties=pattern
formatter.COLOR-PATTERN.pattern=%K{level}%d{HH\:mm\:ss,SSS} %-5p [%c] (%t) %s%e%n
/subsystem=logging/pattern-formatter=stdout-pattern:add(pattern="%s")
/subsystem=logging/console-handler=stdout-console:add(autoflush=true, named-formatter=stdout-pattern, target=System.out)
/subsystem=logging/logger=stdout:add(handlers=[stdout-console], use-parent-handlers=false)
<formatter name="COLOR-PATTERN">
    <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e"/>
</formatter>