C++ 无法将splitterChannel与poco的高级xml配置一起使用
我想使用poco及其配置文件配置Advanced logger。 我创建一个config.xml文件,如下所示:C++ 无法将splitterChannel与poco的高级xml配置一起使用,c++,xml,logging,configuration-files,poco-libraries,C++,Xml,Logging,Configuration Files,Poco Libraries,我想使用poco及其配置文件配置Advanced logger。 我创建一个config.xml文件,如下所示: <?xml version="1.0" ?> <Application> <logging> <channels> <c1> <class>ColorConsoleChannel</class>
<?xml version="1.0" ?>
<Application>
<logging>
<channels>
<c1>
<class>ColorConsoleChannel</class>
<formatter>
<class>PatternFormatter</class>
<pattern>%Y-%m-%d %H:%M:%S : %s : [%p] : %t</pattern>
</formatter>
<traceColor>lightBlue</traceColor>
<debugColor>blue</debugColor>
<informationColor>green</informationColor>
<noticeColor>green</noticeColor>
<warningColor>yellow</warningColor>
<errorColor>red</errorColor>
<criticalColor>lightMagenta</criticalColor>
<fatalColor>lightMagenta</fatalColor>
</c1>
<c2>
<class>FileChannel</class>
<path>logs/traceApplication.log</path>
<rotation>1 M</rotation>
<archive>number</archive>
<purgeCount>5</purgeCount>
<formatter>
<class>PatternFormatter</class>
<pattern>%Y-%m-%d %H:%M:%S : %T : [%p] : %t</pattern>
</formatter>
</c2>
</channels>
<loggers>
<consoleLogger>
<channel>c1</channel>
<level>information</level>
</consoleLogger>
<traceFileLogger>
<channel>c2</channel>
<level>trace</level>
</traceFileLogger>
</loggers>
<channels>
<cSplitter>
<class>SplitterChannel</class>
<channels>consoleLogger,traceFileLogger,mainFileLogger</channels>
</cSplitter>
</channels>
<loggers>
<root>
<channel>cSplitter</channel>
<level>trace</level>
</root>
</loggers>
</logging>
</Application>
在添加splitterChannel之前,我的日志记录工作得很好,但是使用它,它就不再工作了
我收到了错误消息:
未找到:日志记录通道:控制台记录器
我的目标是只有一个根记录器,当我使用它时,它将信息级别的日志记录到控制台中,并将跟踪级别的日志记录到文件中
当我在channels.csplit.channels中设置频道时,它可以工作,但所有频道都记录到同一级别。如果我观看日志配置幻灯片(),它们在logging.channels.splitter.channels属性区域中使用记录器而不是通道。所以我认为这是可能的。更多关于Logger类的信息也从Channel继承
有人已经做过这种工作或有了想法?我终于找到了解决办法。 如果有人感兴趣,我会把它贴在这里 这个文件很好用
<?xml version="1.0" ?>
<Application>
<logging>
<channels>
<cScreen>
<class>ColorConsoleChannel</class>
<formatter>
<class>PatternFormatter</class>
<pattern>%H:%M:%S : %T : [%p] : %t</pattern>
</formatter>
<traceColor>lightBlue</traceColor>
<debugColor>blue</debugColor>
<informationColor>white</informationColor>
<noticeColor>green</noticeColor>
<warningColor>yellow</warningColor>
<errorColor>red</errorColor>
<criticalColor>lightMagenta</criticalColor>
<fatalColor>lightMagenta</fatalColor>
</cScreen>
<cFile>
<class>FileChannel</class>
<path>logs/application.log</path>
<rotation>1 M</rotation>
<archive>number</archive>
<purgeCount>5</purgeCount>
<formatter>
<class>PatternFormatter</class>
<pattern>%H:%M:%S : %T : [%p] : %t</pattern>
</formatter>
</cFile>
</channels>
<loggers>
<root>
<name></name>
<channel>cFile</channel>
<level>trace</level>
</root>
<main>
<name>main</name>
<channel>cScreen</channel>
<level>trace</level>
</main>
</loggers>
</logging>
要仅登录到文件,请执行以下操作:
Poco::Logger::get("").trace(msg);
Poco::Logger::get("main").trace(msg);
Poco::Logger::get("").trace(msg);