Log4cxx: установить порог на appender

Я новичок в log4cxx. Я пытаюсь установить порог для аппендера. В моем коде я получаю ТЕРМИНАЛ appender (он будет писать в моих окнах xterm).

log4cxx::LoggerPtr loggerLog4cxx(log4cxx::Logger::getRootLogger());
log4cxx::AppenderPtr app = loggerLog4cxx->getAppender("TERMINAL");

Я установлю уровень OFF или ALL для этого приложения. Я видел, что класс AppenderSkeleton имеет метод setThreshold(log4cxx::Level). Но я не знаю, как преобразовать мой Appender в AppenderSkeleton.

Спасибо за вашу помощь!

2 ответа

Я нашел решение для моего случая разработки. Я возьму всех своих кандидатов и проверим каждого из них. Мне нужно знать, являются ли они консольными или файловыми приложениями.

log4cxx::LoggerPtr loggerLog4cxx(log4cxx::Logger::getRootLogger());
log4cxx::AppenderList appList = loggerLog4cxx->getAllAppenders ();

for(log4cxx::AppenderList::iterator it=appList.begin(); it!=appList.end(); it++) {
    log4cxx::ConsoleAppenderPtr console = *it;
    if( console ) {
    console->setThreshold( log4cxx::Level::getOff() );
    } else {
    log4cxx::FileAppenderPtr file = *it;
        if ( file ) {
            file->setThreshold( log4cxx::Level::getOff() );
        }
    }
}

Вы устанавливаете уровень на уровне регистратора, а не appender. Посмотрите документацию - http://logging.apache.org/log4cxx/

logger->setLevel(log4cxx::Level::getInfo());

Итак, в вашем случае:

loggerLog4cxx->setLevel(log4cxx::Level::getInfo());

Другие вопросы по тегам