如何在JBoss中禁用std-out的捕获?

时间:2016-05-12 14:30:44

标签: java logging jboss jboss7.x jboss-eap-6

使用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日志记录服务的情况下在控制台中查看和控制该日志输出方式。

1 个答案:

答案 0 :(得分:1)

在入口点中对其进行了硬编码以捕获stdoutstderr。这样做是为了将两个流写入定义的日志处理程序。因此,周围没有真正干净的方法。然而,有一些方法可以使它至少看起来好一点。

您可以创建新的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