1. 程式人生 > >自定義實現log4j的appender

自定義實現log4j的appender

log4j,應用最廣泛的日誌框架。其作者後來推出logback,也是好選擇。不多說廢話。

log4j元件介紹
Log4j主要有三個元件: Logger:負責供客戶端程式碼呼叫,執行debug(Object msg)、info(Object msg)、warn(Object msg)、error(Object msg)等方法。
Appender:負責日誌的輸出,Log4j已經實現了多種不同目標的輸出方式,可以向檔案輸出日誌、向控制檯輸出日誌、向Socket輸出日誌等。 Layout:負責日誌資訊的格式化。

log4j預設提供了很多Appender,如org.apache.log4j.ConsoleAppender,FileAppender等。不過,如果有特殊的需求,就需要自定義實現,比如把日誌傳送到Flume中。我們的需求正是如此。

自定義一個Appender很簡單,只需繼承AppenderSkeleton類,並實現幾個方法即可。

@Override
     protected void append(LoggingEvent event) {
         System.out.println("OneCoder: " + event.getMessage());
     }

     @Override
     public void close() {
           // TODO Auto-generated method stub
     }

     @Override
     public
boolean requiresLayout() { // TODO Auto-generated method stub return false ; }

上述程式碼的效果就是將原資訊再開頭加上”OneCoder”。我們想要傳送到Flume裡,也只需在該方法裡新增Flume客戶端的相關實現即可。這樣你的系統日誌就靈活多了。

當然,想要生效你需要修改log4j的配置檔案,將appender改為你自己實現的appender即可。