Log4j

Программное обеспечение для ведения журнала на основе Java

Apache Log4j
Разработчик(и)Фонд программного обеспечения Apache
Первоначальный выпуск8 января 2001 г .; 24 года назад [1] ( 2001-01-08 )
Стабильный релиз
2.24.3 [2]  / 13 декабря 2024 г. ; 53 дня назад [3] ( 13 декабря 2024 )
Репозиторийgithub.com/apache/logging-log4j2
Написано вЯва
Операционная системаКроссплатформенный
ТипВедение журнала
ЛицензияЛицензия Apache 2.0
Веб-сайтlogging.apache.org/log4j/2.x/

Apache Log4j — это основанная на Java утилита ведения журнала , изначально написанная Ceki Gülcü. Она является частью Apache Logging Services, проекта Apache Software Foundation . Log4j — одна из нескольких фреймворков ведения журнала Java .

С тех пор Гюльджю создал SLF4J , Reload4j, [4] и Logback [5] [ нужен лучший источник ], которые являются альтернативами Log4j. [6]

Команда Apache Log4j разработала Log4j 2 [7] в ответ на проблемы Log4j 1.2, 1.3 java.util.loggingи Logback, решая проблемы, которые возникли в этих фреймворках. [8] Кроме того, Log4j 2 предлагал архитектуру плагинов, которая делала его более расширяемым, чем его предшественник. Log4j 2 не имеет обратной совместимости с версиями 1.x, [9] хотя «адаптер» доступен. 5 августа 2015 года Комитет по управлению проектами Apache Logging Services объявил, что Log4j 1 подошел к концу и пользователям Log4j 1 было рекомендовано обновиться до Apache Log4j 2. [10] 12 января 2022 года Ceki Gülcü выпустил ответвленную и переименованную версию log4j 1.2 как Reload4j версии 1.2.18.0 с целью исправления наиболее острых проблем в log4j 1.2.17, накопившихся с момента его выпуска в 2013 году. [11]

9 декабря 2021 года команда Alibaba Cloud Security Team опубликовала уязвимость нулевого дня , связанную с выполнением произвольного кода в Log4j 2, и ей было присвоено обозначение « Log4Shell ». [12] Tenable охарактеризовал ее как «самую большую и критическую уязвимость последнего десятилетия». [13]

Apache Log4j 2

Apache Log4j 2 является преемником Log4j 1, который был выпущен как версия GA в июле 2015 года. Фреймворк был переписан с нуля и вдохновлен существующими решениями для ведения журналов, включая Log4j 1 и java.util.logging. Основные отличия [14] [15] от 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 для «ленивого журналирования»
  • Маркеры
  • Поддержка пользовательских объектов сообщений
  • «Без мусора или с малым количеством мусора» в распространенных конфигурациях
  • Улучшенная скорость
  • Улучшенная поддержка Linux

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

Функции

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

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

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

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

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

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

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

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

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

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

В Log4j 2 фильтры [27] могут быть определены в элементах конфигурации, чтобы обеспечить более детальный контроль над тем, какие записи журнала должны обрабатываться какими Loggers и Appenders. В дополнение к фильтрации по уровню журнала и сопоставлению регулярных выражений в строке сообщения, 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, выполните проверку getClass().getResource("/log4j2.xml").

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

Пример для Log4j 2

<?xml version="1.0" encoding="UTF-8"?> <Configuration status= "trace" monitorInterval= "60" > <Properties> <Property name= "filename" > target/test.log </Property> </Properties> <Appenders> <Console name= "STDOUT" > <PatternLayout pattern= "%d %p %c{1.} [%t] %m%n" /> </Console>              <File name= "file" fileName= "${filename}" > <PatternLayout> <pattern> %d %p %c{1.} [%t] %m%n </pattern> </PatternLayout> </File> </Appenders> <Loggers> <!--  loggers, имя которого начинается с 'org.springframework', будут регистрировать только сообщения уровня "info" или выше;  если вы извлекаете Loggers, используя имя класса (например, Logger.getLogger(AClass.class))  и если AClass является частью пакета org.springframework, он будет относиться к этой категории  --> <Logger name= "org.springframework" level= "info" additivity= "false" />                     <!--  Пример фильтра: для регистраторов, имя которых начинается с 'com.mycompany.myproduct',  записи журнала уровня "debug" или выше, данные ThreadContextMap которых содержат  пару ключ-значение "test=123", также отправляют эти записи журнала в аппендэр "STDOUT".  --> <Logger name= "com.mycompany.myproduct" level= "debug" additivity= "true" > <ThreadContextMapFilter> <KeyValuePair key= "test" value= "123" /> </ThreadContextMapFilter> <AppenderRef ref= "STDOUT" /> </Logger> <!--  По умолчанию все сообщения журнала уровня "trace" или выше будут зарегистрированы.  Сообщения журнала отправляются в аппендэр "file", а  сообщения журнала уровня "error" и выше будут отправлены в аппендэр "STDOUT".  --> <Корневой уровень = "трассировка" > <AppenderRef ref = "файл" /> <AppenderRef ref = "STDOUT" level = "ошибка" /> </Корень> < /Журналисты> </ Конфигурация>                        

Пример для Log4j 1.2

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> <log4j:configuration> <!--  Аппендер — это место назначения вывода, например консоль или файл;  имена аппендеров выбираются произвольно.  --> <appender name= "stdout" class= "org.apache.log4j.ConsoleAppender" > <layout class= "org.apache.log4j.PatternLayout" > <param name= "ConversionPattern" value= "%d{ABSOLUTE} %5p %c{1}:%L - %m%n" /> </layout> </appender> <!--  регистраторы категории 'org.springframework' будут регистрировать только сообщения уровня "info" или выше;  если вы извлекаете регистраторы, используя имя класса (например, Logger.getLogger(AClass.class))  и если AClass является частью пакета org.springframework, он будет принадлежать к этой категории  --> <logger name= "org.springframework" > <level value= "info" /> </logger>                    <!--  все в spring было установлено на "info", но для класса  PropertyEditorRegistrySupport мы хотим вести журнал "debug"  --> <logger name= "org.springframework.beans.PropertyEditorRegistrySupport" > <level value= "debug" /> </logger> <logger name= "org.acegisecurity" > <level value= "info" /> </logger> <root> <!--  все сообщения журнала уровня "debug" или выше будут записаны в журнал, если не указано иное,  все сообщения журнала будут записаны в "stdout" аппендера, если не указано иное  --> <level value= "debug" /> <appender-ref ref= "stdout" /> </root> </log4j:configuration>                      

ТТСС

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

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

Где

МнемоническийОписание
Используется для вывода количества миллисекунд, прошедших с момента построения макета до создания события регистрации.
Используется для вывода имени потока, сгенерировавшего событие регистрации.
Используется для вывода приоритета события регистрации.
Используется для вывода категории регистрируемого события.
Используется для вывода NDC (вложенного диагностического контекста), связанного с потоком, сгенерировавшим событие регистрации. [29]
%X{ключ}Используется для вывода MDC (сопоставленного диагностического контекста), связанного с потоком, который сгенерировал событие регистрации для указанного ключа. [30]
Используется для вывода предоставленного приложением сообщения, связанного с событием регистрации.
Используется для вывода специфичных для платформы символов новой строки .

Пример вывода
467 [main] ИНФОРМАЦИЯ org.apache.log4j.examples.Sort – Выход из основного метода.

Порты

  • log4c – порт для C. Log4C – это библиотека журналирования на основе C , выпущенная на SourceForge под лицензией LGPL. Для различных операционных систем Unix предоставляются файлы autoconf и automake. В Windows предоставляется Makefile для использования с MSVC . Разработчики также могут использовать собственную систему make для компиляции исходного кода в зависимости от своих требований к сборке. Экземпляр библиотеки log4c можно настроить тремя способами: с помощью переменных среды , программно или через файл конфигурации XML . log4c имеет аппендеры для файлов, потоков и файлов, отображенных в память. (Без адаптера сокета.) Последняя версия – 1.2.4, выпущенная в 2013 году, и проект больше не активно разрабатывается. [31]
  • log4js — порт для JavaScript . Log4js доступен по лицензии Apache Software Foundation . Одной из особенностей Log4js является возможность удаленной регистрации событий браузера на сервере. Используя Ajax, можно отправлять события регистрации в нескольких форматах ( XML , JSON , простой ASCII и т. д.) на сервер для оценки там. Для log4js реализованы следующие аппендеры : AjaxAppender, ConsoleAppender, FileAppender, JSConsoleAppender, MetatagAppender и WindowsEventsAppender. Предоставляются следующие классы Layout: BasicLayout, HtmlLayout, JSONLayout и XMLLayout. Последняя версия по состоянию на 2021 год [обновлять]— 2.0 от 18 октября 2018 года. [32]
  • log4javascript – Еще один порт для JavaScript. log4javascript – это фреймворк для ведения журналов JavaScript, основанный на log4j . Последняя версия на 2021 год [обновлять]– 1.4.13, выпущенная 23 мая 2015 года. [33]
  • JSNLog – порт для JavaScript . Автоматически помещает сообщения из регистраторов JavaScript в серверные журналы с помощью серверного компонента .NET, который взаимодействует с Log4Net, NLog, Elmah или Common.Logging. Это обеспечивает интегрированный журнал для событий на стороне клиента и сервера. Идентификаторы запросов коррелируют события, связанные с определенным пользователем. Конфигурация осуществляется через серверный файл web.config. Поддерживает регистрацию исключений, включая трассировки стека. По состоянию на 2021 год [обновлять]последней версией была 3.0.0, и обновления производились регулярно. [34]
  • Apache Log4net – порт для Microsoft .NET Framework . Первоначальная работа была выполнена Neoworks и была передана в дар Apache Software Foundation в феврале 2004 года. Фреймворк похож на оригинальный log4j, но использует новые функции в среде выполнения .NET. Предоставляет вложенный диагностический контекст (NDC) и сопоставленный диагностический контекст (MDC). Последняя версия по состоянию на 2022 год [обновлять]— 2.0.15. [35]
  • log4perlPerl- порт log4j. Версия 1.57 от октября 2022 года была актуальной по состоянию на 2024 год [обновлять]. [36]
  • Apache log4php – «Универсальная структура журналирования для PHP . Первоначально являвшаяся портом Apache log4j для PHP, она разрослась и теперь включает в себя различные специфичные для PHP функции». [37]
  • PL-SQL-Logging-Utility — это адаптация log4j в PL/SQL. [38]
  • Log4db2 — это утилита ведения журнала для DB2 для LUW, которая использует инструкции SQL с кодом SQL PL. [39]
  • Apache Log4cxx – Фреймворк журналирования для C++, созданный по образцу Apache log4j, который использует Apache Portable Runtime для большинства платформенно-зависимого кода и должен быть пригоден для использования на любой платформе, поддерживаемой APR. Последняя версия — 0.13.0, выпущенная в 2022 году. [40]
  • Log4r – всеобъемлющая и гибкая библиотека журналирования, написанная на Ruby для использования в программах Ruby. Она была вдохновлена ​​и предоставляет большую часть функций проекта Apache Log4j. [41]

Уязвимость Log4Shell

Уязвимость нулевого дня, включающая удаленное выполнение кода в Log4j 2, с дескриптором «Log4Shell» ( CVE -2021-44228), была обнаружена и сообщена Apache компанией Alibaba 24 ноября 2021 года и опубликована в твите 9 декабря 2021 года. [12] К затронутым сервисам относятся Cloudflare , iCloud , Minecraft: Java Edition , [42] Steam , Tencent QQ и Twitter . [43] [44] [45] Apache Software Foundation присвоила Log4Shell максимальный рейтинг серьезности CVSS 10, поскольку миллионы серверов могут быть потенциально уязвимы для эксплойта. [45] Компания по кибербезопасности Tenable охарактеризовала уязвимость как «самую большую и критическую уязвимость последнего десятилетия» [13] , а Free Wortley из Lunasec охарактеризовала ее как «проектный провал катастрофических масштабов». [46]

В Соединенных Штатах директор Агентства по кибербезопасности и безопасности инфраструктуры (CISA) Джен Истерли назвала эксплойт «критическим» и посоветовала поставщикам отдать приоритет обновлениям программного обеспечения, [47] а немецкое агентство Федеральное управление по информационной безопасности (BSI) обозначило эксплойт как имеющий наивысший уровень угрозы, назвав его «чрезвычайно критической ситуацией угрозы» (перевод). [48] [49] Канадский центр кибербезопасности (CCCS) призвал организации принять немедленные меры. [50]

Функцию, вызывающую уязвимость, можно отключить с помощью параметра конфигурации, который был удален [51] в Log4j версии 2.15.0-rc1 (официально выпущенной 6 декабря 2021 года, за три дня до публикации уязвимости) и заменен различными настройками, ограничивающими удаленный поиск, тем самым смягчая уязвимость. [52] [53] Для дополнительной безопасности все функции, использующие JNDI , на которых основана эта уязвимость, будут отключены по умолчанию, а поддержка поиска сообщений будет удалена с версии 2.16.0 и далее. [54] [55]

Смотрите также

Ссылки

  1. ^ "История выпусков Apache Log4j 1.2". apache.org . Apache Software Foundation . Получено 2 сентября 2014 г. .
  2. ^ "Release 2.24.3". 13 декабря 2024 г. Получено 26 декабря 2024 г.
  3. ^ "Release Notes - Log4j". logging.apache.org . Получено 9 октября 2023 г. .
  4. ^ "Reload4j Home". reload4j.qos.ch . Получено 12 января 2022 г. .
  5. ^ "Logback Home". Logback.qos.ch . Получено 24 июля 2014 г. .
  6. ^ Григг, Кади (4 февраля 2022 г.). «Wicked Good Development — эксперты по кибербезопасности говорят о Log4J, Open Source и многом другом». blog.sonatype.com . Получено 16 августа 2022 г. .
  7. ^ "Log4j 2 Guide - Apache Log4j 2". Logging.apache.org. 12 июля 2014 г. Получено 24 июля 2014 г.
  8. ^ Goers, Ralph (15 декабря 2019 г.). «Зачем был создан Log4j 2?». Ральф Goers .
  9. ^ "Log4j 2 Guide - Apache Log4j 2: News". Logging.apache.org. 12 июля 2014 г. Получено 24 июля 2014 г.
  10. ^ "Apache Logging Services Project объявляет о завершении поддержки Log4j 1; рекомендует обновление до Log4j 2". blogs.apache.org. 5 августа 2015 г. Получено 3 июля 2016 г.
  11. ^ "Проект Reload4j; Простая миграция с log4j 1.2.x". qos.ch. 12 января 2022 г. Получено 12 января 2022 г.
  12. ^ ab «В чем суть кошмара безопасности Log4Shell?». Lawfare . 10 декабря 2021 г.
  13. ^ ab «Недавно обнаруженный программный недостаток — «самая критическая уязвимость последнего десятилетия»». The Guardian . Associated Press. 11 декабря 2021 г.
  14. ^ "Новый log4j 2.0". Grobmeier.de. 5 декабря 2012 г. Получено 24 июля 2014 г.
  15. ^ "Log4j – Обзор - Apache Log4j 2". logging.apache.org. 5 июня 2016 г. Получено 3 июля 2016 г.
  16. ^ "Log4j 2 Asynchronous Loggers for Low-Latency Loggers - Apache Log4j 2". Logging.apache.org. 12 июля 2014 г. Получено 24 июля 2014 г.
  17. ^ "Disruptor by LMAX-Exchange". Lmax-exchange.github.io . Получено 24 июля 2014 г. .
  18. ^ "Уровень (API Apache Log4j 1.2.17)". Logging.apache.org. 9 июня 2012 г. Получено 24 июля 2014 г.
  19. ^ "Custom Log Levels". Logging.apache.org. 12 июля 2014 г. Получено 16 июля 2016 г.
  20. ^ "Конфигурация". Logging.apache.org. 5 июля 2016 г. Получено 16 июля 2016 г.
  21. ^ "Архитектура". Logging.apache.org. 5 июля 2016 г. Получено 16 июля 2016 г.
  22. ^ "Appenders". Logging.apache.org. 5 июля 2016 г. Получено 16 июля 2016 г.
  23. ^ "RandomAccessFile". docs.oracle.com. 28 июля 2011 г. Получено 16 июля 2016 г.
  24. ^ "Layouts". Logging.apache.org. 5 июля 2016 г. Получено 16 июля 2016 г.
  25. ^ "GELF". docs.graylog.org. 8 июня 2016 г. Архивировано из оригинала 9 февраля 2020 г. Получено 16 июля 2016 г.
  26. ^ Gerhards, R. (1 марта 2009 г.). "RFC 5424 - The Syslog Protocol". tools.ietf.org. doi :10.17487/RFC5424 . Получено 16 июля 2016 г. . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  27. ^ "Фильтры". Logging.apache.org. 5 июля 2016 г. Получено 16 июля 2016 г.
  28. ^ "TTCCLayout (API Apache Log4j 1.2.17)". Logging.apache.org. 9 июня 2012 г. Получено 24 июля 2014 г.
  29. ^ "Класс NDC". Архивировано из оригинала 20 августа 2007 г. Получено 11 декабря 2021 г.
  30. ^ "MDC (API Apache Log4j 1.2.17)". Logging.apache.org. 9 июня 2012 г. Получено 24 июля 2014 г.
  31. ^ "Logging Framework for C | Бесплатная загрузка программного обеспечения для системного администрирования на сайте". Sourceforge.net . Получено 24 июля 2014 г.
  32. ^ "stritti/Log4js - The Logging Framework for JavaScript with no runtime dependencies". GitHub . Получено 11 декабря 2021 г. .
  33. ^ "фреймворк журналирования JavaScript". log4javascript . Получено 11 декабря 2021 г. .
  34. ^ "Регистрация ошибок JavaScript в журнале на стороне сервера". JSNLog . Получено 11 декабря 2021 г. .
  35. ^ "Apache log4net". Logging.apache.org . Получено 11 декабря 2021 г. .
  36. ^ Шилли, Майк; Гесс, Кевин. "log4perl - log4j для Perl". log4perl . Получено 11 декабря 2021 г. .
  37. ^ "Apache Logging Services". Apache.org . Получено 11 марта 2015 г. .
  38. ^ "tmuth/Logger-A-PL-SQL-Logging-Utility — GitHub". Github.com . Получено 24 июля 2014 г. .
  39. ^ "Log4db2 by angoca". Angoca.github.io . Получено 24 июля 2014 г. .
  40. ^ "log4cxx - Журнал изменений". logging.apache.org .
  41. ^ "Log4r Manual". log4r.rubyforge.org. Архивировано из оригинала 25 декабря 2012 г. Получено 13 апреля 2017 г.
  42. ^ "Уязвимость безопасности в Minecraft: Java Edition". Minecraft . 10 декабря 2021 г.
  43. ^ Гудин, Дэн (9 декабря 2021 г.). «Zeroday в повсеместном инструменте Log4j представляет серьезную угрозу для Интернета». Ars Technica . Получено 10 декабря 2021 г. .
  44. ^ "Худшая уязвимость Apache Log4j RCE Zero day обнаружена в Интернете". Cyber ​​Kendra . 9 декабря 2021 г. Получено 10 декабря 2021 г.
  45. ^ ab Mott, Nathaniel (10 декабря 2021 г.). «Бесчисленные серверы уязвимы для Apache Log4j Zero-Day Exploit». PC Magazine . Получено 10 декабря 2021 г. .
  46. ^ Ньюман, Лили Хей (10 декабря 2021 г.). «Интернет в огне». Wired – через www.wired.com.
  47. ^ «Заявление директора CISA Истерли об уязвимости «Log4j»». CISA . Вашингтон. 11 декабря 2021 г.
  48. ^ «BSI alert vor Sicherheitslücke» [BSI предупреждает об уязвимостях безопасности]. Тагешау (на немецком языке). 12 декабря 2021 г.
  49. ^ «Warnstufe Rot: Schwachstelle Log4Shell führt zu extrem kritischer Bedrohungslage» [Красная тревога: уязвимость Log4Shell вызывает чрезвычайно критическую угрозу]. Пресс-служба BSI (на немецком языке). 12 декабря 2021 г.
  50. ^ «Заявление министра национальной обороны об уязвимости Apache и призыв к канадским организациям принять срочные меры». Правительство Канады . 12 декабря 2021 г. Архивировано из оригинала 20 декабря 2021 г. Получено 12 декабря 2021 г.
  51. ^ "LOG4J2-3198: Log4j2 больше не форматирует поисковые запросы в сообщениях по умолчанию". GitHub . 5 декабря 2021 г.
  52. ^ "Ограничение доступа LDAP через JNDI от rgoers · Запрос на извлечение № 608 · apache/logging-log4j2". GitHub .30 ноября–5 декабря 2021 г.
  53. ^ «Уязвимости безопасности Apache Log4j». 6 декабря 2021 г.
  54. ^ "LOG4J2-3208: Отключить JNDI по умолчанию". 11 декабря 2021 г. Получено 14 декабря 2021 г.
  55. ^ "LOG4J2-3211: Удалить поддержку Lookups в сообщениях". 13 декабря 2021 г. Получено 14 декабря 2021 г.

Дальнейшее чтение

  • Gülcü, Ceki (февраль 2010 г.), Полное руководство Log4j (2-е изд.), QOS.ch, стр. 204, ISBN 978-2-9700369-0-6
  • Гупта, Самудра (22 июня 2005 г.), Pro Apache Log4j (2-е изд.), Apress , стр. 224, ISBN 978-1-59059-499-5
  • Официальный сайт
Взято с "https://en.wikipedia.org/w/index.php?title=Log4j&oldid=1252565014#Ports"