Java.util.logging.FileHandler в Java 8 не работает?

Сначала простой тестовый код:

package javaapplication23;

import java.io.IOException;
import java.util.logging.FileHandler;

public class JavaApplication23 {
    public static void main(String[] args) throws IOException {
        new FileHandler("./test_%u_%g.log", 10000, 100, true);
    }
}

Этот тестовый код создает в Java 7 только один файл «test_0_0.log», независимо от того, как часто я запускаю программу. Это ожидаемое поведение, поскольку для параметра append в конструкторе установлено значение true.

Но если я запускаю этот пример в Java 8, при каждом запуске создается новый файл (test_0_0.log, test_0_1.log, test_0_2.log, ...). Я думаю, что это ошибка.

Имхо, связанное изменение в Java это:

@@ -413,18 +428,18 @@
                     // object.  Try again.
                     continue;
                 }
-                FileChannel fc;
+
                 try {
-                    lockStream = new FileOutputStream(lockFileName);
-                    fc = lockStream.getChannel();
-                } catch (IOException ix) {
-                    // We got an IOException while trying to open the file.
-                    // Try the next file.
+                    lockFileChannel = FileChannel.open(Paths.get(lockFileName),
+                            CREATE_NEW, WRITE);
+                } catch (FileAlreadyExistsException ix) {
+                    // try the next lock file name in the sequence
                     continue;
                 }
+
                 boolean available;
                 try {
-                    available = fc.tryLock() != null;
+                    available = lockFileChannel.tryLock() != null;
                     // We got the lock OK.
                 } catch (IOException ix) {
                     // We got an IOException while trying to get the lock.
@@ -440,7 +455,7 @@
                 }

                 // We failed to get the lock.  Try next file.
-                fc.close();
+                lockFileChannel.close();
             }
         }

(В полном объеме:Набор изменений OpenJDK 6123: ac22a52a732c)

Я знаю, что FileHandler обычно закрывается Logmanager, но это не тот случай, если происходит сбой системы или приложения или процесс завершается. Вот почему у меня нет выражения «закрыть» в приведенном выше примере кода.

Теперь у меня есть два вопроса:

1) Каково ваше мнение? Это ошибка? (Почти ответил в следующих комментариях и ответах)

2) Знаете ли вы обходной путь для получения старого поведения Java 7 в Java 8? (Более важный вопрос ...)

Спасибо за ваши ответы.

Ответы на вопрос(1)

Ваш ответ на вопрос