1. Какие существуют типы логов?
-
системы (System);
-
безопасности (Security);
-
приложения (Application, Buisness).
Пользователь входит в приложение, проверяется пароль. Это действие относится к безопасности (Security). Дальше он запускает какой-нибудь модуль. Это событие уровня приложения (Application). Модуль при старте обращается к другому модулю за какими-то дополнительными данными, производит какие-либо еще вызовы — это уже системные действия (System).
2. Из каких частей состоит система журналирования log4j?
Система журналирования состоит из трёх основных частей:
-
управляющей журналированием - logger;
-
добавляющей в журнал - appender;
-
определяющей формат добавления - layout.
3. Что такое Logger в log4j?
Logger представляет собой объект класса org.apache.log4j.Logger
, который используется как управляющий интерфейс для журналирования сообщений с возможностью задавать уровень детализации. Именно logger проверяет нужно ли обрабатывать сообщение и если журналирование необходимо, то сообщение передаётся в appender, если нет - система завершает обработку данного сообщения.
4. Что такое Appender в log4j?
Appender - это именованный объект журнала событий, реализующий интерфейс org.apache.log4j.Appender
и добавляющий события в журнал. Appender вызывает разные вспомогательные инструменты - компоновщик, фильтр, обработчик ошибок (если они определены и необходимы). В ходе этой работы окончательно устанавливается необходимость записи сообщения, сообщению придаются окончательные содержание и форма.
В log4j журнал может представлять:
-
консоль;
-
файл;
-
сокет;
-
объект класса реализующего
java.io.Writer
илиjava.io.OutputStream
; -
JDBC хранилище;
-
тему (topic) JMS;
-
NT Event Log;
-
SMTP;
-
Syslog;
-
Telnet.
Наиболее часто используемые log4j appender-ы:
-
org.apache.log4j.ConsoleAppender
- вывод в консоль; -
org.apache.log4j.FileAppender
- добавление в файл; -
org.apache.log4j.DailyRollingFileAppender
- добавление в файл с обновлением файла через заданный промежуток времени; -
org.apache.log4j.RollingFileAppender
- добавление в файл с обновлением файла по достижению определенного размера; -
org.apache.log4j.varia.ExternallyRolledFileAppender
- расширение RollingFileAppender обновляющее файл по команде принятой с заданного порта; -
org.apache.log4j.net.SMTPAppender
- сообщение по SMTP; -
org.apache.log4j.AsyncAppender
- позволяет, используя отдельный поток, организовать асинхронную работу, когда сообщения фиксируются лишь при достижении определенного уровня заполненности промежуточного буфера. -
org.apache.log4j.nt.NTEventLogAppender
- добавление в NT Event Log; -
org.apache.log4j.net.SyslogAppender
- добавление в Syslog; -
org.apache.log4j.jdbc.JDBCAppender
- запись в хранилище JDBC; -
org.apache.log4j.lf5.LF5Appender
- сообщение передаётся в специальный GUI интерфейс LogFactor5 -
org.apache.log4j.net.SocketAppender
- трансляция сообщения по указанному адресу и порту; -
org.apache.log4j.net.SocketHubAppender
- рассылка сообщения сразу нескольким удалённым серверам, соединённым по заданному порту; -
org.apache.log4j.net.TelnetAppender
- отсылка сообщения по протоколу Telenet; -
org.apache.log4j.net.JMSAppender
- добавление сообщения в JMS.
5. Что такое Layout в log4j?
Layout - наследник класса org.apache.log4j.Layout
предоставляющий возможность форматирования сообщения перед добавлением в журнал.
В log4j существуют следующие типы layout-ов:
-
org.apache.log4j.SimpleLayout
- на выходе получается строка содержащая лишь уровень вывода и сообщение; -
org.apache.log4j.HTMLLayout
- форматирует сообщение в виде элемента HTML-таблицы; -
org.apache.log4j.xml.XMLLayout
- компонует сообщение в виде XML формате; -
org.apache.log4j.TTCCLayout
- на выходе сообщение дополняется информацией о времени, потоке, имени логгера и вложенном диагностическом контексте; -
org.apache.log4j.PatternLayout
/org.apache.log4j.EnhancedPatternLayout
- настройка форматирования сообщения при помощи шаблона заданного пользователем.
6. Перечислите уровни журналирования в log4j? Назовите порядок их приоритетности.
-
OFF - отсутствие журналирования;
-
FATAL - фатальная ошибка;
-
ERROR - ошибка;
-
WARN - предупреждение;
-
INFO - информация;
-
DEBUG - детальная информация для отладки;
-
TRACE — трассировка всех сообщений.
Между уровнями логирования установлен следующий порядок приоритетов:
ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
7. Какие существуют способы конфигурирования log4j?
Для того, чтобы log4j начал работать нужно предоставить ему конфигурацию. Это можно сделать несколькими путями:
-
Создать конфигурацию программно, т.е. получить logger, определить уровень журналирования, прикрепить appender и задать способ форматирования.
-
Указать файл или URL как аргумент при запуске java-машины
-Dlog4j.configuration=путь/к/файлу/конфигурации
, а затем прочитать его в программе при помощиPropertyConfigurator.configure(...)
/DOMConfigurator.configure(...)
для формата.properties
илиXML
соответственно. -
Загрузить конфигурацию из файла в формате
XML
или.properties
: log4j ищет файл конфигурации в classpath. Сначала ищется файлlog4j.xml
и, если таковой не найден, - файлlog4j.properties
.