У меня есть ситуация, в которой я хочу записать все созданные мной журналы в текстовый файл.
Мы используем java.util.logging.Logger API для генерации логов.
Я попытался:
private static Logger logger = Logger.getLogger(className.class.getName());
FileHandler fh;
fh = new FileHandler("C:/className.log");
logger.addHandler(fh);
Но по-прежнему получать мои журналы только на консоли ....
Ответы:
Попробуйте этот образец. Меня устраивает.
Производит вывод в MyLogFile.log
Редактировать:
Чтобы удалить обработчик консоли, используйте
поскольку ConsoleHandler зарегистрирован родительским регистратором, из которого происходят все регистраторы.
источник
FileHandler(path, true)
для добавления журнала в существующий файл журнала.Во-первых, где вы определили свой логгер и из какого класса \ метода пытаетесь его вызвать? Вот рабочий пример, свежеиспеченный:
В вашем коде вы забыли определить форматер, если вам нужен простой, вы можете сделать это, как я уже упоминал выше, но есть другой вариант, вы можете отформатировать его самостоятельно, есть пример (просто вставьте его вместо этой строки fh .setFormatter (новый SimpleFormatter ()) следующий код):
Или любая другая модификация, как вам нравится. Надеюсь, поможет.
источник
Расположение файла журнала можно контролировать через файл logging.properties. И это может быть передано как параметр JVM ex:
java -Djava.util.logging.config.file=/scratch/user/config/logging.properties
Подробности: https://docs.oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm
Настройка обработчика файлов
Чтобы отправить журналы в файл, добавьте FileHandler в свойство обработчиков в файле logging.properties. Это включит ведение журнала файлов глобально.
handlers= java.util.logging.FileHandler
Настройте обработчик, задав следующие свойства:java.util.logging.FileHandler.pattern указывает местоположение и шаблон выходного файла. Значением по умолчанию является ваш домашний каталог.
java.util.logging.FileHandler.limit указывает в байтах максимальную сумму, которую регистратор записывает в любой файл.
java.util.logging.FileHandler.count указывает, сколько выходных файлов нужно просмотреть.
java.util.logging.FileHandler.formatter указывает класс форматера java.util.logging, который класс обработчика файлов использует для форматирования сообщений журнала. SimpleFormatter записывает краткие «удобочитаемые» сводки записей журнала.
Чтобы указать java использовать этот файл конфигурации вместо $ JDK_HOME / jre / lib / logging.properties:
источник
Доступна хорошая библиотека с именем log4j для Java .
Это обеспечит многочисленные возможности. Перейдите по ссылке, и вы найдете свое решение.
источник
Может быть, это то, что вам нужно ...
источник
источник
источник
Надеюсь, люди найдут это полезным
источник
Вот мой класс регистрации, основанный на принятом ответе :
источник
Вот пример того, как переписать конфигурацию Logger из кода. Не требует внешнего файла конфигурации.
FileLoggerTest.java:
MyLogHandler.java
источник