自定義實現log4j的appender
阿新 • • 發佈:2018-12-23
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即可。