¿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?
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 deFileHandler
y establecer el tamaño máximo de archivo en un valor más grande, como 10MB: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.