Журналирование
_
- Какие существуют типы логов?
- Из каких частей состоит система журналирования log4j?
- Что такое Logger в log4j?
- Что такое Appender в log4j?
- Что такое Layout в log4j?
- Перечислите уровни журналирования в log4j? Назовите порядок их приоритетности.
- Какие существуют способы конфигурирования log4j?
Какие существуют типы логов?
- системы (System);
- безопасности (Security);
- приложения (Application, Buisness).
Пользователь входит в приложение, проверяется пароль. Это действие относится к безопасности (Security). Дальше он запускает какой-нибудь модуль. Это событие уровня приложения (Application). Модуль при старте обращается к другому модулю за какими-то дополнительными данными, производит какие-либо еще вызовы – это уже системные действия (System).
Из каких частей состоит система журналирования log4j?
Система журналирования состоит из трёх основных частей:
- управляющей журналированием - logger;
- добавляющей в журнал - appender;
- определяющей формат добавления - layout.
Что такое Logger в log4j?
Logger представляет собой объект класса org.apache.log4j.Logger, который используется как управляющий интерфейс для журналирования сообщений с возможностью задавать уровень детализации. Именно logger проверяет нужно ли обрабатывать сообщение и если журналирование необходимо, то сообщение передаётся в appender, если нет - система завершает обработку данного сообщения.
Что такое 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 интерфейс LogFactor5org.apache.log4j.net.SocketAppender- трансляция сообщения по указанному адресу и порту;org.apache.log4j.net.SocketHubAppender- рассылка сообщения сразу нескольким удалённым серверам соединённым по заданному порту;org.apache.log4j.net.TelnetAppender- отсылка сообщения по протоколу Telenet;org.apache.log4j.net.JMSAppender- добавление сообщения в JMS.
Что такое 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- настройка форматирования сообщения при помощи шаблона заданного пользователем.
Перечислите уровни журналирования в log4j? Назовите порядок их приоритетности.
- OFF - отсутствие журналирования;
- FATAL - фатальная ошибка;
- ERROR - ошибка;
- WARN - предупреждение;
- INFO - информация;
- DEBUG - детальная информация для отладки;
- TRACE – трассировка всех сообщений.
Между уровнями логирования установлен следующий порядок приоритетов:
OFF < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < ALL
Какие существуют способы конфигурирования log4j?
Для того, чтобы log4j начал работать нужно предоставить ему конфигурацию. Это можно сделать несколькими путями:
- Создать конфигурацию программно, т.е. получить logger, определить уровень журналирования, прикрепить appender и задать способ форматирования.
- Указать файл или URL как аргумент при запуске java-машины
-Dlog4j.configuration=путь/к/файлу/конфигурации, а затем прочитать его в программе при помощиPropertyConfigurator.configure(...)/DOMConfigurator.configure(...)для формата.propertiesилиXMLсоответственно. - Загрузить конфигурацию из файла в формате
XMLили.properties: log4j ищет файл конфигурации в classpath. Сначала ищется файлlog4j.xmlи, если таковой не найден, - файлlog4j.properties.