Logback — это еще один компонент журнала с открытым исходным кодом, разработанный основателем log4j. Logback в настоящее время разделен на три модуля: logback-core, logback-classic и logback-access. logback-core — это основной модуль двух других модулей. logback-classic — это улучшенная версия log4j. Кроме того, logback-classic полностью реализует API SLF4J, так что вы можете легко переключаться на другие системы журналирования, такие как log4j или JDK14 Logging. Модуль доступа logback-access интегрируется с контейнером Servlet для предоставления доступа к журналам через Http.
Преимущества выхода из системы
- Быстрая скорость выполнения и небольшая начальная загрузка памяти;
- Встроенный API SLF4J, конвертация не требуется;
- Простая настройка и может адаптироваться к различным средам;
- Вы можете регулярно удалять журналы с истекшим сроком действия;
- Более мощные фильтры, без необходимости генерировать большое количество журналов из-за изменения уровней журналов;
- Может восстановиться после ошибок ввода-вывода;
- .
У входа в систему много других преимуществ. Я не буду перечислять их здесь. Подробности смотрите в официальной документации Api.
Адрес: https://logback.qos.ch/documentation.html
Debug: Logging | OpenTAP
Инструкция по настройке входа
Что касается описания конфигурации этой части, я просто перечислю некоторые из наиболее часто используемых конфигураций для объяснения. Если вы хотите узнать больше, смотрите официальную документацию.
Описание иерархии входа
Простая иерархическая структура, на самом деле их больше, только для справки.
configuration root logger property appender layout rollingPolicy Pattern fileNamePattern maxFileSize maxHistory totalSizeCap
Конкретные инструкции
Корневой узел конфигурации обычно имеет три атрибута: scan, scanPeriod и debug.
- сканирование: загружать ли автоматически, по умолчанию установлено значение true.
- scanPeriod: интервал модификации монитора, по умолчанию одна минута.
- debug: проверять ли состояние выполнения logback. По умолчанию установлено значение true.
Тогда, если мы хотим использовать это, мы можем сделать следующую конфигурацию:
Подузлы root и logger определяют уровень регистрации входных данных.
- root: это уровень назначенного главного журнала.
- logger: это уровень указанного пользовательского журнала.
объяснениеУровень журнала, заданный параметром: root, является выходом журнала класса, например:
private static Logger LOG = LoggerFactory.getLogger(logbackTest.class);
Уровень ведения журнала, указанный в logger, является настраиваемым уровнем, например:
private static Logger LOG2 = LoggerFactory.getLogger(«oneInfo»);
Их использование заключается в следующем:
Примечание два: level — уровень вывода журнала, аддитивность указывает, печатать ли журнал на консоли.
Профессиональная отладка программ | Ведение логов | Сообщения об ошибках в программе | debug
Дочерний узел свойства обычно используется для определения значения переменной. Есть два атрибута имя и значение. Аналогично ключам и значениям карты в Java.
- name: имя переменной
- значение: значение переменной
Использование заключается в следующем:
Примечание. Путь к файлу, указанный значением, будет автоматически создан в том же каталоге проекта, и нет необходимости создавать его вручную.
дочерний узел appender, компонент, отвечающий за запись логов. Есть два атрибута, имя и класс.
- Имя: Пользовательское имя.
- class: Полное имя, соответствующее пользовательскому имени, которое является методом, используемым для вывода журнала.
Это очень важно, и можно сказать, что это ядро logback. Простое использование заключается в следующем:
объяснениеОпределите имя STDOUT и выведите его на консоль.
макет и рисунок обычно используются вместе.
- макет: форматировать информацию журнала;
- Шаблон: раскладка дочерних элементов, определяющая формат выводимой информации;
Простое использование заключается в следующем:
%d [%thread] %-5level — %msg%n
объяснениеФормат% d в: Pattern указывает формат времени вывода,% thread обозначает имя потока вывода,% -5level обозначает ширину символа,% msg обозначает информацию о выходе, а% n обозначает перевод строки.
rollPolicy, fileNamePattern, maxFileSize, maxHistory и totalSizeCap, как правило, используются для прокрутки журналов, то есть управления вырезанием журналов и т.п.
- rollPolicy: определяет поведение сворачивания бревен, обычно используемое для обрезки бревен.
- fileNamePattern: необходимый узел, обычно используемый для указания пути файла журнала и формата.
- maxFileSize: максимальное значение одного файла журнала, вырезанное после достижения.
- maxHistory: максимальное количество дней, в течение которых хранится файл журнала, то есть срок действия.
- totalSizeCap: максимальное значение общего файла журнала, больше журналы не будут генерироваться после его достижения.
Простое использование заключается в следующем:
$/mylog-%d.%i.txt 10MB 31 10GB
объяснение: Смысл этой конфигурации заключается в том, что файл журнала создается каждый день. Если он превышает 10 МБ, журнал будет сокращен, а имя файла журнала будет увеличено на единицу. Файл журнала будет храниться до 31 дня, а общий файл журнала будет составлять до 10 ГБ.
Инструкция по возврату
После краткого описания файла конфигурации журнала logback, давайте просто используем logback.
Использование logback.xml зависит от трех пакетов jar: slf4j-api, logback-core и logback-classic.
mavan настраивается следующим образом:
org.slf4j slf4j-api 1.7.25 ch.qos.logback logback-classic 1.2.3 ch.qos.logback logback-core 1.2.3
После успешного добавления пакета зависимостей в maven давайте напишем простую демонстрацию, чтобы протестировать его.
определяет три журнала, один основной и два пользовательских журнала.
Общая конфигурация выглядит следующим образом:
%d [%thread] %-5level — %msg%n $/mylog-%d.%i.txt 10MB 31 10GB %d [%thread] %-5level — %msg%n $/oneInfo/%d/oneInfo.%i.txt 10MB 31 10GB %d [%thread] %-5level — %msg%n $/twoInfo/%d/twoInfo.%i.txt 10MB 31 10GB %d [%thread] %-5level — %msg%n
Затем выведите в консоль вывод и файл.
Пример кода этой Java:
Каталог генерации журнала:
Объяснение результатов вывода:
- LOG: поскольку для уровня печати установлено значение info, уровень отладки печататься не будет.
- LOG2: поскольку пользовательская конфигурация имеет значение additivity = «false», она не печатается в консоли. Таким образом, ни один из них не будет напечатан, но журналы выше уровня отладки можно просмотреть в logs / pcm / oneInfo.
- LOG3: поскольку для пользовательской конфигурации установлено значение additivity = «true», ее можно распечатать в консоли. Таким образом, будут напечатаны два журнала уровня предупреждений, которые также можно просмотреть в файле logs / pcm / oneInfo.
другое
Ссылка:
https://logback.qos.ch/documentation.html
https://www.cnblogs.com/warking/p/5710303.html
На этом этапе краткий обзор журнала этой статьи, спасибо за чтение!
Источник: russianblogs.com
Разница между logger.info и logger.debug
В чем разница между logger.debug и logger.info ? Когда будет logger.debug распечатать?
задан 26 фев ’10, 11:02
Senthilnathan
8 ответы
Это будет зависеть от конфигурации ведения журнала. Значение по умолчанию будет зависеть от используемой платформы. Идея состоит в том, что позже, изменив параметр конфигурации с INFO на DEBUG, вы увидите гораздо больше (или меньше, если наоборот) строк, напечатанных без перекомпиляции всего приложения. Если вы думаете, какой из них использовать, то все сводится к тому, чтобы подумать, что вы хотите видеть на каком уровне. Для других уровней, например, в Log4J, посмотрите на API, http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html
Создан 26 фев.
Предлагаю вам ознакомиться со статьей под названием «Краткое введение в log4j». Он содержит краткое объяснение уровней логирования и демонстрирует, как их можно использовать на практике. Основная идея уровней журналов заключается в том, что вы хотите иметь возможность настраивать количество деталей, содержащихся в журналах, в зависимости от ситуации.
Например, если вы пытаетесь устранить проблему, вы бы хотели, чтобы журналы были очень подробными. В рабочей среде вы можете захотеть видеть только предупреждения и ошибки. Уровень журнала для каждого компонента вашей системы обычно контролируется с помощью параметра в файле конфигурации, поэтому его легко изменить. Ваш код будет содержать различные операторы ведения журнала с разными уровнями. При ответе на Exception , вы можете позвонить Logger.error . Если вы хотите напечатать значение переменной в любой заданной точке, вы можете вызвать Logger.debug . Эта комбинация настраиваемого уровня ведения журнала и операторов ведения журнала в вашей программе позволяет вам полностью контролировать, как ваше приложение будет регистрировать свою активность. По крайней мере, в случае log4j порядок уровней журнала:
DEBUG < INFO < WARN < ERROR < FATAL
Вот небольшой пример из этой статьи, демонстрирующий, как работают уровни журналов.
// get a logger instance named «com.foo» Logger logger = Logger.getLogger(«com.foo»); // Now set its level. Normally you do not need to set the // level of a logger programmatically. This is usually done // in configuration files. logger.setLevel(Level.INFO); Logger barlogger = Logger.getLogger(«com.foo.Bar»); // This request is enabled, because WARN >= INFO. logger.warn(«Low fuel level.»); // This request is disabled, because DEBUG < INFO. logger.debug(«Starting search for nearest gas station.»); // The logger instance barlogger, named «com.foo.Bar», // will inherit its level from the logger named // «com.foo» Thus, the following request is enabled // because INFO >= INFO. barlogger.info(«Located nearest gas station.»); // This request is disabled, because DEBUG < INFO. barlogger.debug(«Exiting gas station search»);
Источник: stackovergo.com
Логирование с Slf4j и Logback
Java существует уже много лет. В этом языке программирования огромное количество древнего наследия, особенностей и запутывающих новичков костылей. В первых версиях Java не было нормальной системы логирования, что привело к настоящему кошмару и порождению целого моря несовместимых друг с другом стандартов и библиотек, решающих одну и ту же задачу.
В прошлых статьях я описывал кучу различных библиотек логирования: System.err, JUL, Log4j 1.2, Apache Commons Logging, Log4j 2. В новых приложениях, как правило, ни один из них не используется. Сейчас правильным подходом считается использование API Slf4j и его реализации Logback.
Но что делать со всем старым кодом? Мы же не можем просто выбросить то огромное количество логеров и библиотек, которое уже существует. Для них нужно подключать специальные зависимости, содержащие их API, но вместо реализации перенаправляющие вывод в Slf4j:
- jcl-over-slf4j.jar содержит в себе API от Apache Commons Logging, но вместо его реализации просто перенаправляет все вызовы в Slf4j.
- log4j-over-slf4j.jar содержит в себе API от Log4j, но вместо его реализации перенаправляет все вызовы в Slf4j.
- jul-to-slf4j.jar содержит в себе обработчик (Handler) для JUL, который пишет все сообщения в Slf4j. Так как JUL встроен в JDK, то заменить его как в случае Apache Commons Logging и Log4j мы не можем, именно поэтому мы просто добавляем новый Handler.
Кроме вышеперечисленных зависимостей, перенаправляющих в Slf4j с API других библиотек, существуют зависимости, которые наоборот реализуют API Slf4j:
- slf4j-log4j12.jar перенаправляет вызовы Slf4j в Log4j12, то есть позволяет использовать Log4j 1.2 в качестве реализации API Slf4.
- slf4j-jdk14.jar перенаправляет вызовы Slf4j в JUL, то есть позволяет использовать JUL в качестве реализации API Slf4j.
- slf4j-nop.jar просто игнорирует все вызовы Slf4j, что равносильно полному отключению логов.
- slf4j-simple.jar перенаправляет вызовы Slf4j в System.err.
- slf4j-jcl.jar перенаправляет вызовы Slf4j в Apache Commons Logging, то есть позволяет использовать Apache Commons Logging в качестве реализации API Slf4j. Самое интересное в этом случае то, что Apache Commons Logging тоже является лишь обёрткой с API, перенаправляющей выводы в другие реализации…
- logback-classic.jar — это библиотека логирования, напрямую реализующая API Slf4j. В современных приложениях, как правило, используют именно её.
Надеюсь, я вас не запутал. Итак, что нам нужно сделать, чтобы использовать связку Slf4j и Logback:
- Подключить slf4j-api.
- Подключить logback-classic.
- Подключить jcl-over-slf4j, log4j-over-slf4j, чтобы сообщения логов от зависимостей, которые используют Apache Commons Logging и Log4j перенаправлялись в Slf4j. Можно ещё подключить jul-to-slf4j, но это не рекомендуется, так как от него сильно падает производительность.
- Из всех других подключаемых зависимостей убирать с помощью exclude в Maven зависимость от конкретной библиотеки логирования.
- Настроить Logback.
- Использовать slf4j-api для записи логов.
Давайте сделаем простое приложение с использованием Slf4j. Создайте новый проект Maven. Добавьте туда зависимость от Logback и Slf4j-api:
Источник: urvanov.ru