0

私は自分のアペンダーを作りました:

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()->format(log, event, pool) {segmentation fault} までうまくいきます。助けはありますか?

4

1 に答える 1

1

質問を編集したところ、回答が表示されました (可能であれば、すべてのコードを常に印刷する必要があります)。したがって、問題はオーバーライド メソッドにありrequiresLayoutました。返して正解falseですtrue

于 2012-11-03T19:46:28.480 に答える