Log4cxx:在appender上设置阈值

时间:2012-10-09 13:48:56

标签: appender log4cxx

我是log4cxx的新手。 我尝试为追加者设置一个阈值。在我的代码中,我得到了appender TERMINAL(它将在我的xterm窗口中写入)。

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

我将水平设置为OFF或ALL到此appender。 我已经看到AppenderSkeleton类有一个方法setThreshold(log4cxx :: Level)。 但我不知道如何将我的Appender转换为AppenderSkeleton。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我为我的开发案例找到了解决方案。我会得到所有的答案,并测试他们每个人。我需要知道它们是控制台还是文件追加器。

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

答案 1 :(得分:0)

您在记录器级别设置级别,而不是appender。查看文档 - http://logging.apache.org/log4cxx/

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

所以在你的情况下:

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