带空行的 Wildfly 和 logback
Wildfly and logback with blank lines
我正在尝试将 Logback 与 Wildfire 9 一起使用。为此,我在我的 WEB-INF 文件夹中添加了一个包含此内容的 jboss-deployment-structure.xml 文件(我还排除了 Hibernate确保不要拉 jboss-logging):
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="logging" />
</exclude-subsystems>
<exclusions>
<module name="org.hibernate" />
</exclusions>
</deployment>
</jboss-deployment-structure>
它工作正常,除了我在每个日志之间有空行:
14:25:25,249 INFO [org.jboss.as.jpa] (MSC service thread 1-8) WFLYJPA0002: Read persistence.xml for portalPU
14:25:25,253 INFO [org.jboss.as.jpa] (MSC service thread 1-8) WFLYJPA0002: Read persistence.xml for emptyPU
14:25:25,631 INFO [stdout] (MSC service thread 1-1) 14:25:25,556 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
14:25:25,631 INFO [stdout] (MSC service thread 1-1) 14:25:25,557 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
和:
14:26:49,827 INFO [stdout] (default task-2) 2016-05-03 14:26:49 [default task-2] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:50,676 INFO [stdout] (default task-3) 2016-05-03 14:26:50 [default task-3] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:50,716 INFO [stdout] (default task-4) 2016-05-03 14:26:50 [default task-4] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:50,760 INFO [stdout] (default task-5) 2016-05-03 14:26:50 [default task-5] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:50,779 INFO [stdout] (default task-6) 2016-05-03 14:26:50 [default task-6] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:51,162 INFO [stdout] (default task-8) 2016-05-03 14:26:51 [default task-8] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:51,180 INFO [stdout] (default task-7) 2016-05-03 14:26:51 [default task-7] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
在我的 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>
在 Wildfly 的 logging.properties 文件中,我有这个:
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
我认为问题出在 ConsoleAppender 和 PatternFormatter 的 %n。如果我试图删除 ConsoleAppender 的 %n,就好像我不再有刷新:我看不到日志。如果我删除 PatternFormatter 的 %n,我就没有空行,但 Wildfly 的日志不再有换行符。
如何让内容干净无空行?
由于 WildFly 在记录器中包含 System.out
和 System.err
,如果您在 ConsoleAppender
上使用该模式,这将导致打印 2 个行分隔符。您可以尝试从 ConsoleAppender
中删除 %n
格式并使用 immediateFlush=true
选项,或者您可以创建另一个不会打印行分隔符的 console-handler
并将其分配给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
格式化的,这应该可以工作)。然后创建一个使用该模式的新 console-handler
。最后添加一个名为 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>
我正在尝试将 Logback 与 Wildfire 9 一起使用。为此,我在我的 WEB-INF 文件夹中添加了一个包含此内容的 jboss-deployment-structure.xml 文件(我还排除了 Hibernate确保不要拉 jboss-logging):
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<exclude-subsystems>
<subsystem name="logging" />
</exclude-subsystems>
<exclusions>
<module name="org.hibernate" />
</exclusions>
</deployment>
</jboss-deployment-structure>
它工作正常,除了我在每个日志之间有空行:
14:25:25,249 INFO [org.jboss.as.jpa] (MSC service thread 1-8) WFLYJPA0002: Read persistence.xml for portalPU
14:25:25,253 INFO [org.jboss.as.jpa] (MSC service thread 1-8) WFLYJPA0002: Read persistence.xml for emptyPU
14:25:25,631 INFO [stdout] (MSC service thread 1-1) 14:25:25,556 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
14:25:25,631 INFO [stdout] (MSC service thread 1-1) 14:25:25,557 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
和:
14:26:49,827 INFO [stdout] (default task-2) 2016-05-03 14:26:49 [default task-2] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:50,676 INFO [stdout] (default task-3) 2016-05-03 14:26:50 [default task-3] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:50,716 INFO [stdout] (default task-4) 2016-05-03 14:26:50 [default task-4] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:50,760 INFO [stdout] (default task-5) 2016-05-03 14:26:50 [default task-5] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:50,779 INFO [stdout] (default task-6) 2016-05-03 14:26:50 [default task-6] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:51,162 INFO [stdout] (default task-8) 2016-05-03 14:26:51 [default task-8] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
14:26:51,180 INFO [stdout] (default task-7) 2016-05-03 14:26:51 [default task-7] DEBUG f.s.q.p.web.filters.InstallFilter -Users found: 1
在我的 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>
在 Wildfly 的 logging.properties 文件中,我有这个:
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
我认为问题出在 ConsoleAppender 和 PatternFormatter 的 %n。如果我试图删除 ConsoleAppender 的 %n,就好像我不再有刷新:我看不到日志。如果我删除 PatternFormatter 的 %n,我就没有空行,但 Wildfly 的日志不再有换行符。
如何让内容干净无空行?
由于 WildFly 在记录器中包含 System.out
和 System.err
,如果您在 ConsoleAppender
上使用该模式,这将导致打印 2 个行分隔符。您可以尝试从 ConsoleAppender
中删除 %n
格式并使用 immediateFlush=true
选项,或者您可以创建另一个不会打印行分隔符的 console-handler
并将其分配给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
格式化的,这应该可以工作)。然后创建一个使用该模式的新 console-handler
。最后添加一个名为 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>