Java 如何在Windows 7中处理大型控制台输出?
我正在使用一个基于Java的应用程序。当它启动时,它打开一个控制台并在那里写入输出 但是,输出有时太大,不适合ConsoleEE窗口(console窗口最多有10000行),输出要大10倍以上 我已经试过下载其他控制台应用程序(比如conemu),但是最大行数(大约32760行)太少了 我的电脑上有Ultra Edit,它可以捕获DOS命令输出,但在调试程序时,我无法从简单的文本编辑器对话框启动调试会话 现在我只剩下几个解决方案:Java 如何在Windows 7中处理大型控制台输出?,java,python,winapi,windows-7,console,Java,Python,Winapi,Windows 7,Console,我正在使用一个基于Java的应用程序。当它启动时,它打开一个控制台并在那里写入输出 但是,输出有时太大,不适合ConsoleEE窗口(console窗口最多有10000行),输出要大10倍以上 我已经试过下载其他控制台应用程序(比如conemu),但是最大行数(大约32760行)太少了 我的电脑上有Ultra Edit,它可以捕获DOS命令输出,但在调试程序时,我无法从简单的文本编辑器对话框启动调试会话 现在我只剩下几个解决方案: 将已运行进程的控制台窗口的输出重定向到我的系统上的本地文件 但
- 将已运行进程的控制台窗口的输出重定向到我的系统上的本地文件
- 但是,请找到另一个不受预定义值限制的控制台仿真工具
- 自己开发sych控制台仿真工具(最好是Python、Java或Visual Basic),但为了做到这一点,我需要从Windows 7 API了解如何开始这样做
谢谢如果您所说的是Java应用程序,那么您可以将启动包封装在自己的类中,将
System.out
和System.err
替换为基于该类的内容,并将其打印到控制台(您从System.out的值之前保存的)和您设置的日志文件中
像这样:
public class LogWrapper {
public static void main(String[] args) {
PrintStream out = System.out;
PrintStream err = System.err;
System.setOut(new TeePrintStream(out, new PrintStream("system.out.log")));
System.setErr(new TeePrintStream(err, new PrintStream("system.err.log")));
the.original.ClassYouWereCalling.main(args);
}
}
注意:
TeePrintStream
您仍然需要执行…我只是将所有内容发送到一个文件中。这有什么问题吗?你能编辑java应用程序吗?依我看,如果你的输出超过1000行,标准输出就不是办法。。。我会将其存储在一个文件中,如果需要stdout,您可以将其拆分为10000行的块(如linux中的more
或less
),应用程序总是分配一个新控制台,还是从命令提示符启动时会重用控制台?如果是后者,只需使用
操作符将输出重定向到文件。