Логеры - это экземпляры класса org.apache.log4j.Logger, вызывая методы которых в подсистему log4j посылается сообщение для логгинга.
Посылаемые сообщения различаются по приоритету:
LOG.info("информация");
LOG.error("произошла ошибка");
кроме того ещё есть методы с исключениями:
...
}catch(exception ex)
LOG.error("произошла ошибка", ex);
здесь в log4j попадает дополнительная инфомация о ошибке.
Кроме приоритета у логера есть имя. Имя задаётсяпри создании логера - это строка. Есть метод для создания логера по классу, что сделано для удобства и внутри log4j класс конвертируется в строку содержащую полное имя класса ( clazz.getName() )
в именах логеров реализовано "наследование" то на консоль попадают сообщения из всех классов пакета "mypackage". Наследование работает так: При логировании в логер с именем "mypackage.MyClass" происходит также логирование в логер с именем "mypackage" и в корневой логер (в него попадают вообще все сообщения).
Аппендер - объект который опеределяет что нужно делать с логируемыыми сообщениями. Аппендеры описываются в настроечном файле (log4j.xml)чтобы вывод логов в рпоцессе эксплуатации приложения можно было легко менять.
Давайте рассмотрим типичное приложение.
В данном примере 2 класса в пакете mypackage. Каждый класс имеет Logger LOG. И log4j настроен так что от класса
Servlet
лог записывается в файл access.log, а от класса myDao в application.log. Ещё есть consoleAppender - он настроен
для
вывод на консоль. Т. к.
В приведённом примере кода сообщения из логера ru.log4j.Servlet с приоритетом выше или равно INFO
перенаправятся appender1.
appender1, экземпляр FileAppender записывает (предварительноотформатировав)
сообщения в файл
access.log.
логер "mypackage.MyClass" записывает соощения с приоритетом выше или равно ERROR в файл application.log.
логер "mypackage" выводит соощения с приоритетом выше или равно DEBUG на консоль.