我正在 log4j 中编写一个自定义附加程序,它使用组合来包装另一个附加程序(并通过自定义附加程序路由一些附加程序的功能)。基本上,代码看起来类似于:
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 spring 配置中设置记录器,如下所示:
...
<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>
...
和 log4j的各种其他设置DailyRollingFileAppender
不会产生任何输出。但是,如果我为log4j.appender.APPLICATION
a创建类DailyRollingFileAppender
并从每个键中删除关键字Target.
,它就可以正常工作。
我的班级设置有问题吗?我对财产分配在这里的工作方式有误解吗?谢谢!