1

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

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

我将为此附加程序设置关闭或全部级别。我已经看到 AppenderSkeleton 类有一个方法 setThreshold(log4cxx::Level)。但我不知道如何将我的 Appender 转换为 AppenderSkeleton。

谢谢你的帮助!

4

2 回答 2

3

我已经为我的开发案例找到了解决方案。我将得到我所有的附加程序,并测试它们中的每一个。我需要知道它们是控制台还是文件附加器。

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() );
        }
    }
}
于 2012-10-10T06:47:33.883 回答
0

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

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

所以在你的情况下:

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

于 2012-10-09T14:04:58.613 回答