Не изобретайте это колесо, если вы можете его избежать.Посмотрите на Log4j или лучше slf4j .
Log4j и slf4j очень эффективны, если вы не отслеживаете, поэтому в производственной системе вы можете уменьшить уровеньведения журнала и все еще имеют хорошую производительность.
Оба log4j и slf4j записывают немедленно в файлы журнала и сбрасывают, не делайте буферизацию по умолчанию, по очень хорошей причине, что вы хотите видеть в файле журнала исключение, котороевызвал ваш крах.Если вы действительно хотите добавить буферизацию, вы можете сделать это ( FileAppender # bufferedIO * )
Что касается finalize (), то он не гарантированно вызывается при выходе.С System # runFinalizersOnExit .
устарело.Этот метод небезопасен.Это может привести к вызову финализаторов для живых объектов, в то время как другие потоки одновременно манипулируют этими объектами, что приводит к ошибочному поведению или тупику.Включить или отключить финализацию при выходе;это означает, что финализаторы всех объектов, которые имеют финализаторы, которые еще не были вызваны автоматически, должны быть запущены до выхода из среды выполнения Java. По умолчанию финализация при выходе отключена .
Мой акцент.Таким образом, нет, похоже, что у буферизованного регистратора были бы врожденные проблемы.