我有配置文件,它有两个文件appender的根类别。在编程方面我指定了两个类别。但这两个类别都有两个追加者。我尝试从每个类别中删除一个appender但它不起作用。在以下代码中。我想从categoryInfo中删除A2 appender,从categoryData中删除A1 Appender。
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")));
答案 0 :(得分:3)
我不确定我是否理解你的意思。
但是你混淆了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
在您的代码中,只需获取类别&#34;数据&#34;和&#34;信息&#34;将为您提供具有所需行为的记录器