如何在不从应用程序撕毁输出的情况下重定向JVM输出?
最近我正在编写一些微基准测试代码,因此我必须打印出JVM行为以及我的基准测试信息。我使用
-XX:+PrintCompilation
-XX:+PrintGCDetails
和其他选项来获取 JVM 状态。对于基准测试信息,我只是使用方法。因为我需要知道我打印的消息的顺序和JVM输出。System.out.print()
当我只是在控制台中打印出来时,我可以得到好的结果,尽管JVM输出有时会撕裂我的消息,但由于它们位于不同的线程中,因此它是可以理解和接受的。
当我需要做一些批处理基准测试时,我想将输出重定向到一个文件中
,并使用python从文件中获取结果并进行分析。pipe (> in Linux system)
这是问题所在:
JVM 输出总是与我在 Java 应用程序中打印的消息重叠。
它破坏了消息的完成。
任何想法如何处理这种情况?我需要将 JVM 输出和应用程序输出放在同一位置,以便保留序列,因为它很重要。而且它们彼此不重叠,所以我不会丢失任何东西。