Log4j

редактировать
Apache Log4j
Apache Log4j Logo.png
Разработчик (и) Apache Software Foundation
Первоначальный выпуск8 января, 2001; 19 лет назад (2001-01-08)
Стабильный выпуск 2.13.3 / 10 мая 2020 г.; 5 месяцев назад (2020-05-10)
Репозиторий Репозиторий Log4j
Написано наJava
Операционная система Кросс-платформенная
Тип Ведение журнала
Лицензия Лицензия Apache 2.0
Веб-сайтведение журнала.apache.org / log4j /2.x/

Apache Log4j - это Java -на основе утилиты журналирования. Первоначально он был написан Ceki Gülcü и является частью проекта Apache Software Foundation. Log4j - одна из нескольких платформ ведения журналов Java..

Gülcü с тех пор начал проекты SLF4J и Logback с намерением предложить преемника Log4j.

Команда Apache Log4j создала преемника Log4j 1 с номером версии 2. Log4j 2 был разработан с упором на проблемы Log4j 1.2, 1.3, java.util.logging и Logback, а также устраняет проблемы, которые появились в тех рамках. Кроме того, Log4j 2 предлагает архитектуру плагинов, которая делает его более расширяемым, чем его предшественник. Log4j 2 не имеет обратной совместимости с версиями 1.x, хотя доступен «адаптер».

5 августа 2015 года Комитет по управлению проектами Apache Logging Services объявил, что срок службы Log4j 1 подошел к концу и пользователям Log4j 1 рекомендуется перейти на Apache Log4j 2.

Содержание
  • 1 Apache Log4j 2
  • 2 уровня журнала Log4j
    • 2.1 Пользовательские уровни журнала
  • 3 Конфигурация Log4j
    • 3.1 Пример для Log4j 2
    • 3.2 Пример для Log4j 1.2
  • 4 TTCC
  • 5 портов
  • 6 См. Также
  • 7 Ссылки
  • 8 Дополнительная литература
  • 9 Внешние ссылки
Apache Log4j 2

Apache Log4j 2 является преемником Log4j 1, который был выпущен как Версия GA выпущена в июле 2014 года. Фреймворк был переписан с нуля и основан на существующих решениях для ведения журналов, включая Log4j 1 и java.util.logging. Основные отличия от Log4j 1:

  • Повышенная надежность. Сообщения не теряются при перенастройке фреймворка, как в Log4j 1 или Logback
  • Расширяемость: Log4j 2 поддерживает систему плагинов, позволяющую пользователям определять и настраивать пользовательские компоненты
  • Упрощенный синтаксис конфигурации
  • Поддержка xml, json, yaml и конфигураций свойств
  • Улучшенные фильтры
  • Поддержка поиска свойств для значений, определенных в файле конфигурации, системных свойствах, переменных среды, ThreadContext Карта и данные, представленные в событии
  • Поддержка нескольких API: Log4j 2 может использоваться с приложениями, использующими API Log4j 2, Log4j 1.2, SLF4J, Commons Logging и java.util.logging (JUL).
  • Пользовательские уровни журнала
  • Поддержка лямбда-выражения в стиле Java 8 для «ленивого ведения журнала»
  • Маркеры
  • Поддержка пользовательских объектов сообщений
  • «Без мусора или с низким уровнем мусора» в обычных конфигурациях
  • Повышенная скорость

Одной из наиболее узнаваемых особенностей Log4j 2 является производительность «Асинхронных регистраторов». Log4j 2 использует LMAX Disruptor. Библиотека снижает потребность в блокировке ядра и увеличивает производительность журналирования в 12 раз. Например, в той же среде Log4j 2 может записывать более 18 000 000 сообщений в секунду, тогда как другие платформы, такие как Logback и Log4j 1, просто записывают < 2,000,000 messages per second.

Уровни журнала Log4j

В следующей таблице определены встроенные уровни журнала и сообщения в Log4j в порядке убывания важности. В левом столбце приводится обозначение уровня журнала в Log4j, а в правом столбце приводится краткое описание каждого уровня журнала.

УровеньОписание
ВЫКЛНаивысший возможный ранг, предназначенный для отключения регистрации.
FATALСерьезные ошибки, вызывающие преждевременное завершение работы. Ожидайте, что они будут немедленно видны на консоли состояния.
ОШИБКАДругие ошибки времени выполнения или непредвиденные условия. Ожидайте, что они будут немедленно видны на консоли состояния.
ПРЕДУПРЕЖДЕНИЕИспользование устаревших API-интерфейсов, неправильное использование API, «почти» ошибки, другие нежелательные или неожиданные ситуации выполнения, но не обязательно «неправильные». Ожидайте, что они будут немедленно видны на консоли состояния.
ИНФОРМАЦИЯИнтересные события выполнения (запуск / завершение работы). Ожидайте, что они будут сразу же видны на консоли, поэтому будьте консервативны и сведите к минимуму.
DEBUGПодробная информация о потоке через систему. Ожидайте, что они будут записаны только в журналы. Вообще говоря, большинство строк, регистрируемых вашим приложением, следует записывать как DEBUG.
TRACEСамая подробная информация. Ожидайте, что они будут записаны только в журналы. Начиная с версии 1.2.12.

Пользовательские уровни журнала

Log4j 2 позволяет пользователям определять свои собственные уровни журнала. Инструмент генератора исходного кода предназначен для создания регистраторов, которые поддерживают настраиваемые уровни журнала, идентичные уровням встроенного журнала. Пользовательские уровни журнала могут дополнять или заменять встроенные уровни журнала.

Конфигурация Log4j

Log4j можно настроить через файл конфигурации или через код Java. Файлы конфигурации могут быть записаны в формате XML, JSON, YAML или файл свойств. В конфигурации вы можете определить три основных компонента: регистраторы, приложения и макеты. Настройка ведения журнала через файл имеет то преимущество, что его можно включить или выключить, не изменяя приложение, использующее Log4j. Например, приложению можно разрешить запуск с выходом из системы, пока не возникнет проблема, а затем снова включить ведение журнала, просто изменив файл конфигурации.

Регистраторы называются адресатами сообщений журнала. Это имена, известные приложению Java. Каждый регистратор независимо настраивается относительно того, какой уровень ведения журнала (FATAL, ERROR и т. Д.) Он в настоящее время регистрирует. В ранних версиях Log4j они назывались категорией и приоритетом, но теперь они называются регистратором и уровнем соответственно. Регистратор может отправлять сообщения журнала нескольким приложениям.

Фактические выходы выполняются Appenders . Доступно множество приложений с описательными именами, например FileAppender, RollingFileAppender, ConsoleAppender, SocketAppender, SyslogAppender и SMTPAppender. В Log4j 2 добавлены приложения, которые записывают в Apache Flume, Java Persistence API, Apache Kafka, NoSQL в базы данных, Память- сопоставленные файлы, файлы произвольного доступа и конечные точки ZeroMQ. К любому регистратору можно подключить несколько приложений, поэтому можно записывать одну и ту же информацию на несколько выходов; например, в файл локально и в прослушиватель сокета на другом компьютере.

Приложения используют Макеты для форматирования записей журнала. Популярным способом форматирования файлов журнала по одной строке за раз является PatternLayout, который использует строку шаблона, очень похожую на функцию C / C ++ printf. Существуют также средства форматирования HTMLLayout и XMLLayout для использования, когда форматы HTML или XML более удобны соответственно. Log4j 2 добавил макеты для CSV, Graylog Extended Log Format (GELF), JSON, YAML и RFC-5424.

В Log4j 2, Фильтры могут быть определены в элементах конфигурации, чтобы дать более детальный контроль над тем, какие записи журнала должны обрабатываться какими регистраторами и добавителями. В дополнение к фильтрации по уровню журнала и сопоставлению регулярных выражений в строке сообщения, Log4j 2 добавил пакетные фильтры, временные фильтры, фильтрацию по другим атрибутам событий журнала, таким как маркеры или карта контекста потока и фильтры сценария JSR 223.

Для отладки некорректной конфигурации:

  • В конфигурациях Log4j 2 установите для атрибута statusзначение TRACE для отправки выходных данных внутреннего журнала состояния на стандартный выход. Чтобы включить регистрацию состояния до того, как конфигурация будет найдена, используйте свойство Java VM -Dorg.apache.logging.log4j.simplelog.StatusLogger.level = trace.
  • В Log4j 1 используйте свойство Java VM - Dlog4j.debug.

Чтобы узнать, где был загружен файл конфигурации log4j2.xml, из inspect getClass (). GetResource ("/ log4j2.xml").

Также существует неявное "ненастроенное" или "по умолчанию" "конфигурация Log4j, это конфигурация Java-приложения, оснащенного Log4j, в котором отсутствует какая-либо конфигурация Log4j. Это выводит на стандартный вывод предупреждение о том, что программа не настроена, и URL-адрес веб-сайта Log4j, на котором можно найти подробную информацию о предупреждении и конфигурации. Помимо вывода этого предупреждения ненастроенное приложение Log4j будет печатать только записи журнала ERROR или FATAL в стандартном формате.

Пример для Log4j 2

target / test.log% d% p% c {1.} [% T]% m% n

Пример для Log4j 1.2

TTCC

TTCC - это формат сообщения, используемый log4j. TTCC - это аббревиатура от Time Thread Category Component. Он использует следующий шаблон:

% r [% t]% -5p% c% x -% m% n

Где

МнемоникаОписание
% rИспользуется для вывода количества миллисекунд, прошедших от создания макета до создания события регистрации.
% tИспользуется для вывода имени потока, который сгенерировал событие регистрации.
% pИспользуется для вывода приоритета события регистрации.
% cИспользуется для вывода категории события регистрации.
% xИспользуется для вывода NDC (вложенного диагностического контекста), связанного с потоком, который сгенерировал событие регистрации.
% X {key}Используется для вывода MDC (сопоставленный диагностический контекст), связанный с потоком, который сгенерировал событие регистрации для указанного ключа.
% mИспользуется для вывода предоставленного приложением сообщения, связанного с событием регистрации.
% nИспользуется для вывода зависящего от платформы символа или символов новой строки.

Пример вывода . 467 [main] INFO org.apache.log4j.examples.Sort - Выход из основного метода.

Порты
  • log4c - порт для C. Log4C - это библиотека журналирования на основе C, выпущенная на SourceForge в рамках LGPL лицензия. Для различных операционных систем Unix предусмотрены файлы autoconf и automake. В Windows предоставляется Makefile для использования с MSVC. Разработчики также могут использовать свою собственную систему make для компиляции исходного кода, в зависимости от своих инженерных требований к сборке. Экземпляр библиотеки log4c можно настроить тремя способами: с помощью переменных среды, программно или через файл конфигурации XML. log4c имеет дополнения для файлов, потоков и файлов с отображением памяти. (Без адаптера Socket.) Последняя версия - 1.2.4, выпущенная в 2013 году, и проект больше не разрабатывается активно.
  • log4js - порт для JavaScript. Log4js доступен по лицензии Apache Software Foundation. Особенностью Log4js является возможность удаленно регистрировать события браузера на сервере. Используя Ajax, можно отправлять события журнала в нескольких форматах (XML, JSON, plain ASCII и т. Д.) В сервер для оценки там. Для log4js реализованы следующие приложения: AjaxAppender, ConsoleAppender, FileAppender, JSConsoleAppender, MetatagAppender и WindowsEventsAppender. Предоставляются следующие классы макета: BasicLayout, HtmlLayout, JSONLayout и XMLLayout. Последняя версия - 1.1, выпущенная в 2008 году.
  • log4javascript - Еще один порт для JavaScript. log4javascript - это среда ведения журналов JavaScript, основанная на log4j. Последняя версия - 1.4.9, выпущенная в мае 2014 года.
  • JSNLog - порт для JavaScript. Автоматически помещает сообщения из регистраторов JavaScript в журналы на стороне сервера с помощью серверного компонента.NET, который взаимодействует с Log4Net, NLog, Elmah или Common.Logging. Это обеспечивает интегрированный журнал событий на стороне клиента и сервера. Идентификаторы запросов коррелируют события, связанные с конкретным пользователем. Конфигурация осуществляется через файл web.config на стороне сервера. Поддерживает ведение журнала исключений, включая трассировку стека. В июле 2014 г. последняя версия была 2.7.1, и обновления производились регулярно.
  • Apache Log4net - порт для Microsoft .NET Framework. Первоначальная работа была сделана и была передана в дар Apache Software Foundation в феврале 2004 года. Фреймворк похож на исходный log4j, но при этом использует преимущества новых функций в среде выполнения.NET. Предоставляет вложенный диагностический контекст (NDC) и сопоставленный диагностический контекст (MDC). Последняя версия - 2.0.8, выпущенная в 2017 году.
  • log4perl - Порт на Perl широко популярного пакета журналирования log4j. Последняя версия - 1.49, выпущенная в феврале 2017 года.
  • Apache log4php - «Универсальный фреймворк для ведения журнала для PHP. Первоначально портированный с Apache log4j на PHP, он был расширен за счет включения различных специфичных для PHP features. "
  • PL-SQL-Logging-Utility - это адаптация log4j в PL / SQL.
  • Log4db2 - это служебная программа для ведения журнала для DB2 for LUW, которая использует инструкции SQL с кодом SQL PL.
  • Apache Log4cxx - платформа ведения журналов для C ++, созданная по образцу Apache log4j, который использует Apache Portable Runtime для большей части кода для конкретной платформы и должен использоваться на любой платформе, поддерживаемой APR. В настоящее время он находится в стадии инкубации. Последняя версия - 0.10.0, выпущенная в 2008 году.
  • Log4r - всеобъемлющая и гибкая библиотека журналов, написанная на Ruby для использования в программах Ruby. Он был вдохновлен и предоставляет многие функции проекта Apache Log4j.
См. Также
  • icon Портал компьютерного программирования
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Дополнительная литература
Внешние ссылки
Последняя правка сделана 2021-05-28 05:28:00
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте