我在使用 Java 时遇到了一些问题。我想要的其实很简单 我正在为著名游戏 Minecraft 的 mod 开发一个插件,我需要能够解析传入 STOUT 的每一行控制台输出。
我在互联网上环顾四周,但似乎找不到任何可以用来执行此操作的东西。我知道有些控制台输出是通过默认的Logger,有些是通过system.out。我有一个函数,parseConsole(String line)
,它将解析该行并在它包含单词等时执行某些操作。我希望为控制台上显示的每一行输出调用该函数,但它不能中断流程,因为每一行在被我的函数解析后仍然会发送到控制台。
最佳答案
您可以使用System.setOut()替换控制台 PrintStream。您可以将其替换为在发送到控制台的过程中检查文本的实现。
以下是如何过滤的示例:
public class MyFilterPrintStream extends PrintStream {
@Override public void print(String s) {
// ... process output string here ...
// pass along to actual console output
super.print(s);
}
}
// install my filter
System.setOut(new MyFilterPrintStream(System.out));
关于java - 拦截并解析 Logger 或控制台输出而不干扰它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11760871/