В последнее время я пишу некоторый код с микро-бенчмарком, поэтому мне приходится печатать поведение JVM вместе со своей контрольной информацией. Я использую
-XX:+PrintCompilation
-XX:+PrintGCDetails
и другие параметры для получения статуса JVM. Для контрольной информации я просто использую метод System.out.print()
. Потому что мне нужно знать порядок сообщения, которое я распечатал, и выход JVM.
Я могу получить хороший результат, когда я просто распечатываю их на консоли, хотя выход JVM иногда разрывает мои сообщения, но поскольку они находятся в разных потоках, это понятно и приемлемо.
Когда мне нужно выполнить некоторые контрольные тесты, я бы хотел redirect the output into a file
с помощью pipe (> in Linux system)
и использовать python для получения результата из файла и анализа его.
Вот проблема:
The JVM output always overlapped with the messages I printed in the Java application.
Это разрушило завершение сообщений.
Любая идея, как справиться с этой ситуацией? Мне нужно both the JVM output and application output in the same place in order to preserve the sequence because it is important. And they do not overlap on each other so I don't lose anything.