Я хочу использовать логи в моей программе. Я слышал о java.util.logging , но не знаю с чего начать.
Есть ли примеры того, что я могу сделать с ведением журнала? Как бы я использовал вход в свою собственную программу?
java
logging
java.util.logging
Ренато Динхани
источник
источник
Ответы:
java.util.logging
избавляет вас от необходимости хранить в приложении еще один jar-файл, и это хорошо работает с хорошим Formatter.В общем, в начале каждого класса вы должны иметь:
Затем вы можете просто использовать различные возможности класса Logger .
Используйте
Level.FINE
для всего, что отлаживается на верхнем уровне потока выполнения:Используйте
Level.FINER
/Level.FINEST
внутри циклов и в местах, где вам не всегда нужно видеть столько подробностей при отладке основных проблем потока:Используйте параметризованные версии средств ведения журналов, чтобы не создавать тонны мусора конкатенации строк, за которым GC придется не отставать.
Object[]
как указано выше, это дешево, обычно в стеке.При обработке исключений всегда регистрируйте полную информацию об исключении:
Я всегда передаю
ex.toString()
здесь сообщение, потому что тогда, когда я "grep -n
" для "Exception
" в файлах журнала, я тоже вижу сообщение. В противном случае он будет на следующей строке вывода, сгенерированного дампом стека, и вам потребуется более продвинутый RegEx, чтобы соответствовать этой строке, что часто дает вам больше выходных данных, чем вам нужно просмотреть.источник
.fine()
метод для регистрации, но я не могу заставить сообщения отображаться ...Должен объявить регистратор следующим образом:
так что если вы реорганизуете имя своего класса, это следует.
Я написал статью о java logger с примерами здесь .
источник
Есть много примеров, а также различных типов для ведения журнала. Посмотрите на пакет java.util.logging .
Пример кода:
Без жесткого кодирования имени класса :
источник
Main.class.getSimpleName()
? Таким образом, инструмент рефакторинга изменит его должным образом, если это необходимо, и все же он не так неуклюж, как ваше второе решение.SLF4J - лучший фасад регистрации, чем Apache Commons Logging (ACL). Он имеет мосты к другим системам журналирования, делая прямые вызовы в ACL, Log4J или Java Util Logging через SLF4J, так что вы можете направить весь вывод в один файл журнала, если хотите, только с одним файлом конфигурации журнала. Почему ваше приложение будет использовать несколько каркасов? Потому что сторонние библиотеки, которые вы используете, особенно старые, возможно.
SLF4J поддерживает различные реализации журналирования. Он может выводить все на стандартный вывод, использовать Log4J или Logback (рекомендуется через Log4J).
http://www.slf4j.org/
http://logback.qos.ch/
источник
Я бы использовал Minlog , лично. Это очень просто, так как класс регистрации состоит из нескольких сотен строк кода.
источник
Я бы посоветовал вам воспользоваться утилитой регистрации общих файлов Apache. Он хорошо масштабируется и поддерживает отдельные файлы журналов для разных регистраторов. Смотрите здесь .
источник