#java #java.util.logging
#java #java.util.logging
Вопрос:
Для строк, которые не слишком длинные, FileHandler
работает нормально. Но если строка прилично длинная, она ничего не записывает в файл журнала. Например, вот код, который пытается записать строку из 50 тысяч символов:
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());
}
}
Есть ли способ заставить это работать?
Комментарии:
1. Если я запущу это, он выведет мне 50000 а на консоль… как вы это запускаете?
2. Я запускаю его из Eclipse
3.
it doesn't write anything to the log file
Вы имеете в виду консоль? Не могли бы вы опубликовать скриншот? Я думаю, что это проблема с выводом Eclipse, потому что я пробовал это с IntelliJ и cmd, оба работают.4. Я имею в виду файл журнала на диске, поскольку я использую
FileHandler
5. @Chin Я скопировал ваш код и запустил его… но он нигде не генерирует файл журнала
Ответ №1:
FileHandler
Имеет ограничение, как описано в его документации:
<имя обработчика>.limit указывает приблизительный максимальный объем для записи (в байтах) в любой файл. Если это равно нулю, то предела нет. (По умолчанию без ограничений).
В нем указано значение по умолчанию как no limit, но ограничение устанавливается logging.properties
файлом, найденным в используемом каталоге установки JRE / JDK. В моей системе, Java 8 или Java 17, этот файл содержит строку
java.util.logging.FileHandler.limit = 50000
установка предела в 50000.
Возможные решения:
- установите ограничение в конструкторе
FileHandler
, например:
new FileHandler("%h/java%u.log", 0, 1); // using the default file pattern
- наличие другого файла конфигурации (
logging.properties
) с заданным пределом, указаннымjava.util.logging.config.file
системным свойством.