使用JBoss EAP 6.4(AS 7.x我猜)。
默认情况下,JBoss的日志记录服务将所有应用程序输出捕获到stdout(并且可能是stderr)并将其包装在自己的基于log4j的日志中。在本地运行时,我想完全禁用这个(烦人的)功能 1 ,但是我在Interwebs上找到的引用都不起作用或者是旧版本的JBoss。我尝试在jboss-deployment-structure
配置中排除每个可能的日志框架,将-Dorg.jboss.logging.per-deployment=false
作为系统属性传递,但JBoss仍然捕获stdout。
如何在这个版本的JBoss中禁用它?
[1]如果您必须知道原因,那是因为我们通过logback进行了详细的日志记录配置,并且在IDE中本地运行时希望能够在没有JBoss日志记录服务的情况下在控制台中查看和控制该日志输出方式。
答案 0 :(得分:1)
在入口点中对其进行了硬编码以捕获stdout
和stderr
。这样做是为了将两个流写入定义的日志处理程序。因此,周围没有真正干净的方法。然而,有一些方法可以使它至少看起来好一点。
您可以创建新的console-handler
并定义stdout
记录器,以确保只写入简单的消息。
以下是一些CLI命令,用于配置名为stdout
的记录器,以便只打印它收到的消息。
/subsystem=logging/pattern-formatter=plain-formatter:add(pattern="%s")
/subsystem=logging/console-handler=plain-console:add(autoflush=true, target=System.out, named-formatter=plain-formatter)
/subsystem=logging/logger=stdout:add(use-parent-handlers=false, handlers=[plain-console])
注意:它可能是我的测试logback.xml配置,但我必须为%s%n
使用plain-formatter
模式。
我能想到的唯一其他选择是编写您自己的logback ConsoleAppender
,它会根据java.io.FileOutputStream.out
创建输出流,而不是使用System.out
。