Моя программа Java, работающая под Linux, должна закрыть некоторые дескрипторы файлов (устройства, на самом деле), прежде чем она выключится, поэтому у меня на JVM добавлен крюк отключения. Тем не менее, я заметил, что у java.util.logging.LogManager
также есть крюк отключения, и он, как правило, отключается, прежде чем я выключу, что означает, что я не могу ничего записать о моем завершении процесса.Могу ли я предотвратить слишком быстрое закрытие `java.util.logging.LogManager`?
Есть ли способ предотвратить запуск LogManager своего затвора отключения, чтобы я мог выполнять протоколирование при выключении, а затем сказать, что он будет очищен, когда я буду готов?
Я рассмотрел это, но похоже, что это будет очень много работы. В идеале подклассификация LogManager была бы приятной, но ее конструктор по умолчанию - это то, где добавлен крюк остановки, без возможности предотвратить его вызов. – tyrel
Иногда, чтобы повторно реализовать класс, я скопировал весь код из Java API, а затем просто сделал твики, где мне было нужно. Это некрасиво, но это работает. – markspace
Да, неясно, позволит ли мне лицензия на исходный код JDK. – tyrel