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());