监控控制台的所有输出

时间:2015-07-05 14:13:38

标签: java logging io console

我正在为一个程序开发一个插件,特别是Minecraft服务器Bukkit,我需要捕获控制台中显示的所有内容。但是,出于某种原因,我无法做到这一点。以下代码是我用来应用我的过滤器的代码:

           if (response == 0){ 
                gameWindow.dispose();
                new CSE141HW5(); 
            }

我假设将过滤器应用于根记录器以及两个系统流将允许我捕获所有内容。然而,有一些消息逃脱了过滤器。我不知道为什么这不起作用。除了记录器或System.out之外,还有什么办法可以将东西打印到控制台上吗?

注意: 上面代码中的ClientManager,LogHandler和FilterOutputStream是我写的类,我确保它们正常工作。我确定问题在于我没有对每个打印源应用过滤器。

1 个答案:

答案 0 :(得分:0)

  

我假设将过滤器应用于根记录器以及两个系统流将允许我捕获所有内容。

来自Java Logging Overview

  

默认情况下,Logger会将任何输出消息记录到其parent's handlers,依此向上递送到树上。

当日志记录向上移动时,它们 传递给logger.log(LogRecord)。如果要捕获所有内容,则需要在根记录器上安装处理程序,并确保所有记录器都将useParentHanders设置为true。

您还需要注意root logger handlers are created on demand.