我有配置文件,它有根目录和两个文件追加器。在编程方面,我指定了两类。但这两个类别都有两个附加项。我试图从每个类别中删除一个附加程序,但它不起作用。在下面的代码中。我想从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")));
最佳答案
我不知道我是否明白你的意思。
但是你是不是把类别(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
在您的代码中,只需获取类别“data”和“info”就可以向记录器提供您所需的行为