Java 带空行的Wildfly和logback
我正在尝试使用Wildfire 9的Logback。为此,我在WEB-INF文件夹中添加了一个jboss-deployment-structure.xml文件,其中包含以下内容(我还排除了Hibernate,以确保不拉jboss日志): 以及: 在我的logback.xml中,我将此模式用于控制台: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
<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)
这些命令添加了一个只打印传入消息的模式(因为它是通过logbackConsoleAppender设置格式的,这应该可以工作)。然后创建一个新的控制台处理程序
,该处理程序使用该模式。最后添加一个名为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>