LOG4CPP с несколькими файлами - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть файл конфигурации, он имеет корневую категорию с двумя файлами appender. В программировании я указал две категории. но у обеих категорий есть два дополнения. Я пытаюсь удалить одного аппендера из каждой категории, но он не работает. В следующем коде. Я хочу удалить приложение A2 из категории «Информация» и приложение «A1» из категории «Данные».

Файл конфигурации

    log4j.rootCategory=INFO, A1
    log4j.Categoty=INFO, A2
    log4j.appender.A1=org.apache.log4j.FileAppender
    log4j.appender.A1.fileName=A1.log
    log4j.appender.A1.layout=org.apache.log4j.BasicLayout

    log4j.appender.A2=org.apache.log4j.FileAppender
    log4j.appender.A2.fileName=A2.log
    log4j.appender.A2.layout=org.apache.log4j.BasicLayout

код

    try 
    {
       log4cpp::PropertyConfigurator::configure("conf");
    }
    catch (log4cpp::ConfigureFailure e) 
    {
       cout<<"Log4cpp Error: "<<e.what()<<endl;
    }
    log4cpp::Category& categoryInfo = log4cpp::Category::getInstance("A1");
    log4cpp::Category& categoryData = log4cpp::Category::getInstance("A2");

    categoryInfo.setAdditivity(true);
    categoryData.setAdditivity(true);
    categoryData.setPriority(log4cpp::Priority::WARN);

    categoryInfo.removeAppender(log4cpp::Appender::getAppender(std::string("A2")));
    categoryData.removeAppender(log4cpp::Appender::getAppender(std::string("A1")));

1 Ответ

3 голосов
/ 17 ноября 2011

Я не уверен, что понимаю, что вы имеете в виду.

Но разве вы перепутали Category (Logger) и Appender?

Из моего опыта работы с Log4J ваша конфигурациячто-то вроде этого:

log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.fileName=A1.log
log4j.appender.A1.layout=org.apache.log4j.BasicLayout

log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.fileName=A2.log
log4j.appender.A2.layout=org.apache.log4j.BasicLayout

log4j.rootCategory=ERROR, A1
log4j.category.data=INFO, A1    # only A1 in data logger
log4j.category.info=INFO, A2    # only A2 in info logger

А в вашем коде просто получите категорию «данные» и «информация» даст вам регистратор с вашим желаемым поведением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...