0
我正在寫一個自定義appender在log4j中使用組合來包裝另一個appender(並通過自定義的appenders的一些功能路由)。基本上,代碼類似於此:log4j自定義appender沒有產生任何輸出
public class CustomAppender extends AppenderSkeleton {
private Appender target;
@Override
public void activateOptions() {
super.activateOptions();
if (target == null) {
errorHandler.error("Target is null");
}
}
@Override
protected void append(LoggingEvent event) {
if (target == null) {
errorHandler.error("Target is null");
} else {
target.doAppend(this.processEvent(event));
}
}
@Override
public void close() {
if (target != null) target.close();
}
public Appender getTarget() {
return target;
}
public void setTarget(Appender target) {
this.target = target;
}
@Override
public boolean requiresLayout() {
return target == null ? false : target.requiresLayout();
}
}
,我試圖建立這樣的XML配置方式,記錄器:
...
<prop key="log4j.appender.APPLICATION">CustomAppender</prop>
<prop key="log4j.appender.APPLICATION.Target">org.apache.log4j.DailyRollingFileAppender</prop>
<prop key="log4j.appender.APPLICATION.Target.DatePattern">...</prop>
...
與各種其他設置爲DailyRollingFileAppender
和log4j的不產生任何輸出。但是,如果我爲log4j.appender.APPLICATION
a DailyRollingFileAppender
製作班級,並從每個鍵中刪除關鍵字Target.
,則工作得很好。
我的課程設置有問題嗎?我對財產分配在這裏的工作方式有誤解嗎?謝謝!