¿Está roto java.util.logging.FileHandler en Java 8?

Primero, un código de prueba simple:

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);
    }
}

Este código de prueba crea con Java 7 un solo archivo "test_0_0.log", no importa con qué frecuencia ejecuto el programa. Este es el comportamiento esperado porque el parámetro append en el constructor está establecido en verdadero.

Pero si ejecuto este ejemplo en Java 8, cada ejecución crea un nuevo archivo (test_0_0.log, test_0_1.log, test_0_2.log, ...). Creo que esto es un error.

En mi opinión, el cambio relacionado en Java es este:

@@ -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();
             }
         }

(En su totalidad:OpenJDK changeset 6123: ac22a52a732c)

Sé que normalmente el Administrador de archivos se cierra por el Logmanager, pero este no es el caso, si el sistema o la aplicación se bloquea o el proceso se mata. Es por eso que no tengo una declaración de "cerrar" en el código de muestra anterior.

Ahora tengo dos preguntas:

1) ¿Cuál es tu opinión? ¿Es esto un error? (Casi respondido en los siguientes comentarios y respuestas)

2) ¿Conoces una solución alternativa para obtener el antiguo comportamiento de Java 7 en Java 8? (La pregunta más importante ...)

Gracias por tus respuestas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta