Стандартные аппендеры.

Log4j gоставляеся с довольно большим количеством аппендеров. Конечно написать свой аппендер зачастую очень просто.но чтобы не изобретать колесо заново давайте рассмотрим какие есть стандартные аппендеры.

Вывод на консоль

  • org.apache.log4j.ConsoleAppender - наиболее часто используемый во время разработки аппендер. Выводит сообщения на консоль. Что логируется и в каком формате зависит от Layout

4 следующие аппендера наиболее часто используются в _продакшен системах

  • org.apache.log4j.FileAppender - просто записывает логируемые сообщения в файл. К недостаткам этого аппендера следует отнести то что размер файла лога постоянно растёт и может поучиться один огромный файл.
  • org.apache.log4j.DailyRollingFileAppender - тоже записывает сообщения в файл но каждый день создаёт новый файл с таким же именем. в старом изменяет имя файла - добавляет год, месяц и день к имени.
  • org.apache.log4j.RollingFileAppender - этот аппендер тоже записывает сообщения в файл. и для создаёт новые файлы. но не каждый день как предыдущий а при достижении опеределённого размера (по умолчнию 10 МБ), старые файлы переименовывает - добавляет к имени файла индекс;1, 2, 3 и т.д. Максимальный размер индекса задаётся настройкой maxBackupIndex. При достижении инднекса maxBackupIndex старые файлы перетираются новыми. Таким образом размер логов можно строго ограничить.
  • org.apache.log4j.net.SMTPAppender - посылает сообщения по электронной почте. Очень полезный аппендер для приложений высоконадёжных для которых ошибка в логе - это экстренный случай.

Вспомогательные Аппендеры

  • org.apache.log4j.AsyncAppender - вспомогательный аппендер. Позволяет записывать сообщения асинхроно. Использует буфер для увеличения производительности.
  • org.apache.log4j.varia.NullAppender - этот аппендер отличается гениальной простотой. Как можно догадаться из названия все сообщения он просто выбрасывает (записывает в Null). Если вам интересно написать свой аппендер то посмотрите исходный код - хорошее начала для изучения. смотрет

Интеграция с существующими логерами операционной системы

  • org.apache.log4j.nt.NTEventLogAppender- Пишет логи в виндовый журнал. обязательно положите NTEventLogAppender.dll в директорию перечисленную в PATH.
  • org.apache.log4j.net.SyslogAppender пишет логи в Syslog - такие логи широко испольуется в IP сетях. Стандарт для Unix и Linix систем.

Другие логеры

  • org.apache.log4j.jdbc.JDBCAppender записывает сообщения в БД через jdbc. Уже буферезирован. Как написано в javadoc этот аппендер могут полностью заменить в следующих версия log4j.
  • org.apache.log4j.lf5.LF5Appender записывает сообщения на ui консоль написанную на Swing.
  • org.apache.log4j.WriterAppender - позволяет записывать не только в файл но и в произвольный java.io.Writer или java.io.OutputStream. Похоже через xml его создать нельзя, а предназначен для расширения.

Остальные аппендеры

Остальные аппендеры я ни разу не применял и думаю они вообще редко применяются. Если вдруг какой-то из них вас заинтересовал предлагаю юратиться к англоязычной документации.
  • org.apache.log4j.net.SocketAppender
  • org.apache.log4j.net.SocketHubAppender
  • org.apache.log4j.net.TelnetAppender
  • org.apache.log4j.net.JMSAppender - посылает JMS сообщения
  • org.apache.log4j.varia.ExternallyRolledFileAppender