gpt4 book ai didi

c++ - 无法将 splitterChannel 与 poco 的高级 xml 配置一起使用

转载 作者:数据小太阳 更新时间:2023-10-29 02:40:35 27 4
gpt4 key购买 nike

我想使用 poco 及其配置文件配置一个高级记录器。我创建了一个 config.xml 文件:

<?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>

我使用 Poco::Util::ServerApplication 类,在初始化方法中我输入了:

void CBS2AudioVideo::initialize(Poco::Util::Application& self)
{
loadConfiguration("config.xml");
Poco::Util::ServerApplication::initialize(self);
}

在添加 splitterChannel 之前,我的日志记录工作正常,但有了它,它就不再起作用了。

我收到错误信息:

Not found: logging channel: consoleLogger

我的目标是只有一个根记录器,当我使用它时,它将信息级别登录到控制台,并以跟踪级别登录文件。

当我在 channels.cSplitter.channels 中设置 channel 时,它可以工作,但所有 channel 都记录到同一级别。如果我使用日志记录配置幻灯片 ( http://pocoproject.org/slides/185-LoggingConfiguration.pdf ),他们使用记录器而不是 logging.channels.splitter.channels 属性区域中的 channel 。所以我认为这是可能的。此外,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>

登录屏幕和文件 make :

Poco::Logger::get("main").trace(msg);

只登录文件make

Poco::Logger::get("").trace(msg);

关于c++ - 无法将 splitterChannel 与 poco 的高级 xml 配置一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075345/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com