На данный момент запись по умолчанию выглядит примерно так:
Oct 12, 2008 9:45:18 AM myClassInfoHere
INFO: MyLogMessageHere
Как мне это сделать?
Oct 12, 2008 9:45:18 AM myClassInfoHere - INFO: MyLogMessageHere
Пояснение Я использую java.util.logging
logging.properties
, с адаптацией, основанной на предложении @BrunoEberhard и сокращенном имени регистратора:java.util.logging.SimpleFormatter.format=%1$tF %1$tT %4$.1s %2$s %5$s%6$s%n
1)
-Djava.util.logging.SimpleFormatter.format
Java 7 поддерживает свойство с
java.util.Formatter
синтаксисом строки формата.Смотрите здесь .
Мой любимый:
что делает вывод примерно таким:
2) Размещение в IDE
IDE обычно позволяют вам устанавливать системные свойства для проекта. Например, в NetBeans вместо добавления -D ... = ... где-нибудь добавьте свойство в диалоговом окне действия в форме
java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-...
- без кавычек. IDE должна разобраться.3) Помещаем это в Maven - Surefire
Для вашего удобства вот как поместить его в Surefire:
4) ручной работы
У меня есть библиотека с несколькими
java.util.logging
родственными классами . Среди них этоSingleLineFormatter
. Скачать jar здесь .источник
Подобно Tervor, но мне нравится изменять свойство во время выполнения.
Обратите внимание, что это необходимо установить до создания первого SimpleFormatter - как было написано в комментариях.
источник
Как сказал Обедия Стейн, необходимо создать свой собственный
format
метод. Но я бы изменил несколько вещей:Создайте подкласс, производный непосредственно от
Formatter
, а не отSimpleFormatter
. БольшеSimpleFormatter
нечего добавить.Будьте осторожны при создании нового
Date
объекта! Убедитесь, что вы указали датуLogRecord
. При создании новогоDate
с конструктором по умолчанию он будет представлять дату и времяFormatter
обработкиLogRecord
, а не датуLogRecord
создания.Следующий класс может использоваться как средство форматирования в
Handler
, который, в свою очередь, может быть добавлен вLogger
. Обратите внимание, что он игнорирует всю информацию о классах и методах, доступную вLogRecord
.источник
Это то, что я использую.
Вы получите что-то вроде ...
источник
ofNullable(record.getThrown()).ifPresent(v -> v.printStackTrace());
непосредственно перед возвратом отформатированного сообщения.На снимке экрана в Eclipse выберите «Запуск от имени», затем «Запуск конфигураций ...» и добавьте ответ Тревора Робинсона в двойные кавычки вместо кавычек. Если вы пропустите двойные кавычки, вы получите ошибку «не удалось найти или загрузить основной класс».
источник
Я выяснил, как это работает. Вы можете создать подкласс SimpleFormatter и переопределить метод форматирования
Немного удивленный этим API, я бы подумал, что больше функциональности / гибкости будет предоставлено из коробки.
источник
formatMessage(record)
вместоrecord.getMessage()
. Владельцы места не меняются.Это ведение журнала относится к вашему приложению, а не к общей функции Java. Какие приложения вы используете?
Возможно, это происходит из конкретной библиотеки журналов, которую вы используете в своем собственном коде. Если да, опубликуйте информацию о том, какой из них вы используете.
источник
java.util.logging.Logger
Если вы входите в веб-приложение с помощью tomcat, добавьте:
Об аргументах ВМ
источник
если вы используете java.util.logging, то есть файл конфигурации, который делает это для регистрации содержимого (если вы не используете программную конфигурацию). Итак, ваши варианты:
1) запустить постпроцессор, который удаляет разрывы строк
2) изменить конфигурацию журнала И удалить из него разрывы строк. Перезагрузите приложение (сервер), и все будет хорошо.
источник