Добавление моего собственного приложения через файл конфигурации log4j

Я сделал свой собственный apper:

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) {ошибка сегментации}. Любая помощь ?


person parzival    schedule 31.10.2012    source источник


Ответы (1)


Я отредактировал свой вопрос, и ответ теперь есть (весь код всегда нужно печатать, если это возможно). Итак, проблема была в методе переопределения requiresLayout. Он возвращает false, а true — правильное решение.

person parzival    schedule 03.11.2012
comment
В Java getLayout() выдает исключение NullPointerException. Вы решили мою проблему спасибо. - person Ena; 11.10.2013