1
1
Fork 0
java-interview/log.md

9.7 KiB
Raw Permalink Blame History

Вопросы для собеседования

Журналирование

Какие существуют типы логов?

  • системы (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 интерфейс LogFactor5
  • org.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 трассировка всех сообщений.

Между уровнями логирования установлен следующий порядок приоритетов:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

к оглавлению

Какие существуют способы конфигурирования log4j?

Для того, чтобы log4j начал работать нужно предоставить ему конфигурацию. Это можно сделать несколькими путями:

  • Создать конфигурацию программно, т.е. получить logger, определить уровень журналирования, прикрепить appender и задать способ форматирования.
  • Указать файл или URL как аргумент при запуске java-машины -Dlog4j.configuration=путь/к/файлу/конфигурации, а затем прочитать его в программе при помощи PropertyConfigurator.configure(...)/ DOMConfigurator.configure(...) для формата .properties или XML соответственно.
  • Загрузить конфигурацию из файла в формате XML или .properties: log4j ищет файл конфигурации в classpath. Сначала ищется файл log4j.xml и, если таковой не найден, - файл log4j.properties.

к оглавлению

Источники

Вопросы для собеседования