Создание нового аппендера

Создать новый аппендер очень легко. Вообще чтобы написать Аппендер нужно написать класс реазизующий интерфейс org.apache.log4j.Appender который содержит довольно много методов.

Специально чтобы упростить написание новых аппендеров разработчики log4j написали абстрактный класс org.apache.log4j.AppenderSkeleton . Этот аппендер представляет из себя "скелет" для новых аппендеров. Чтобы наростить мясо нужно реализовать всего 3 метода метод:

abstract protected void append(LoggingEvent event);

public boolean requiresLayout()

public void close();

В методе append() как раз и нужно логировать сообщение. event содержит всю необходимую информацию. Методе requiresLayout() возвращает falseв случае если layout не используется. В методе close() - нужно закрывть открытые ресурсы (если они открывались в аппендере).

Давайте напишем свой логер который сигналит по pc-спикеру, и выводит сообщение на консоль.


1    package ru.log4j.Log4jBeep;
2    
3    import org.apache.log4j.AppenderSkeleton;
4    import org.apache.log4j.spi.LoggingEvent;
5    
6    import java.awt.Toolkit;
7    
8    /**
9     * Этот аппендер пикает PC-спикером и выводит на консоль сообщение.
10    */
11   public class BeepAppender extends AppenderSkeleton {
12       /**
13        * Пикаем и выводим сообщение.
14        * @param event отсюда берётся сообщение.
15        */
16       @Override
17       protected void append(LoggingEvent event) {
18           Toolkit.getDefaultToolkit().beep();
19           System.out.println(event.getMessage());
20       }
21   
22       /**
23        * ресурсы не выделялись - закрывать ничего не надо.
24        */
25       @Override
26       public void close() {
27   
28       }
29       /**
30        * Layout не используется.
31        */
32       @Override
33       public boolean requiresLayout() {
34           return false;
35       }
36   }
37   

Скачать исходный код

Вот и новый аппендер готов. Теперь его можно добавлять в конфиг и использовать.

скачать исходный код всего примера.

Для использования в проектах рекомендую вывод на экран не делать а комбинировать в конфиге с ConsoleApplender.