При сбое JVM создает файл журнала, который сохраняется (по умолчанию) в текущей папке приложения и имеет имя в следующем формате: hs_err_pid[PID].log
Мне нужно, чтобы JVM сохранила этот файл в другой папке с нужным именем. Итак, я использую этот аргумент командной строки для виртуальной машины:
-XX:ErrorFile=./log/jvm_error_pid%p.log
Это работает, но мне что-то не нравится в этом решении. Предположим, что папка журнала уже содержит файл с именем jvm_error_pid5000.log. Если в будущем произойдет сбой на JVM с PID 5000, JVM не переопределит файл jvm_error_pid5000.log из папки журнала и сохранит этот файл журнала в совершенно другом месте (не то, что я проверено в папке TEMP текущего пользователя ОС). Он даже не переименовывает новый файл, добавляя случайную строку для обеспечения уникальности.
Я не нашел ничего об этой проблеме уникальности на странице документации Oracle о файлах журнала сбоев. Я хотел бы знать, есть ли способ улучшить этот аргумент командной строки, чтобы он всегда генерировал разные имена файлов журнала сбоев. Например, я хочу использовать аргумент командной строки, чтобы указать дату и час в имени файла:
-XX:ErrorFile=./log/jvm_error_pid%p_%d_%h.log