通过log4j配置文件添加我自己的appender

时间:2012-10-31 14:33:02

标签: logging log4j

我做了自己的追加者:

class MyAppender : public AppenderSkeleton
{...
void MyAppender ::append(const spi::LoggingEventPtr& event, Pool& p)
{
    LogString log;
    log4cxx::helpers::Pool pool;
    printf("test\n");
    getLayout()->format(log, event, pool);
    ...
}
...
 boolean requiresLayout(){return false; }
...
}

我也通过log4j配置文件添加了它:

log4j.appender.MYAPPND=org.apache.log4j.MyAppender 
log4j.appender.MYAPPND.layout=org.apache.log4j.PatternLayout
log4j.appender.MYAPPND.layout.ConversionPattern=%d{ISO8601} %d{%Z} [%-5p] [%t] [%c] [%C{1}.%M(%L)] - %m%n

log4j.logger.file.name = DEBUG, MYAPPND

直到getLayout() - >格式(日志,事件,池){分段错误}才能正常工作。 有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

我现在编辑了我的问题和答案(如果可能的话,所有代码都需要打印)。所以,问题是覆盖方法requiresLayout。它返回falsetrue是正确的解决方案。