es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se puede generar una línea larga con FileHandler?

Para líneas que no son demasiado largas, FileHandler funciona bien. Pero si la línea es bastante larga, no escribe nada en el archivo de registro. Por ejemplo, aquí está el código que intenta escribir una línea de 50k caracteres:

public class LoggerExample {
    private static final Logger LOGGER = Logger.getLogger(LoggerExample.class.getName());
    public static void main(String[] args) throws SecurityException, IOException {
        FileHandler fileHandler = new FileHandler();
        fileHandler.setFormatter(new SimpleFormatter());
        LOGGER.addHandler(fileHandler);

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 5000; i++) {
            sb.append("aaaaaaaaaa");
        }
        LOGGER.info(sb.toString());
    }
}

¿Hay alguna manera de hacer que esto funcione?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de hacer que esto funcione. La clase FileHandler tiene un constructor que admite un parámetro para el tamaño máximo de archivo que debe permitir antes de pasar a un archivo nuevo. Por defecto, este límite está establecido en 1MB. Para hacer que el código anterior funcione, puedes crear una nueva instancia de FileHandler y establecer el tamaño máximo de archivo en un valor más grande, como 10MB:

    FileHandler fileHandler = new FileHandler("log.txt", 10 * 1024 * 1024, 1, true);
    

    Aquí, el primer parámetro es el nombre del archivo de registro, el segundo parámetro es el tamaño máximo de archivo en bytes (10MB en este caso), el tercer parámetro es el número de archivos de registro que se deben mantener antes de eliminar los antiguos, y el cuarto parámetro es un indicador para especificar si se debe agregar al archivo de registro o sobrescribirlo por completo.

    Con este cambio, el FileHandler podrá manejar el mensaje de registro largo sin problemas.

Comments are closed.