使用 Poco 库,如何在拆分器通道记录器中为每个通道设置不同的日志级别?

Using Poco library, how to set different log levels per channel in a splitter channel logger?

我现在拥有的:

.

//Windows Event Log
Poco::EventLogChannel* elChannel = new Poco::EventLogChannel("App");

//Simple file Log
Poco::SimpleFileChannel* sfChannel = new Poco::SimpleFileChannel();
sfChannel->setProperty("path", "log.txt");
sfChannel->setProperty("rotation", "10 M");

//Splitter Channel 
Poco::SplitterChannel* sChannel = new Poco::SplitterChannel();
sChannel->addChannel(sfChannel);
sChannel->addChannel(elChannel);

logger().root().setChannel(sChannel);
logger().root().setLevel(Poco::Message::PRIO_INFORMATION);

我希望拆分器中的每个通道具有不同的日志级别:

这样只有警告以上的消息才会转到 Windows 事件查看器。

可以使用标准 Poco::Logger 以某种方式实现吗?

记录级别是每个记录器,而不是每个通道,因此您必须有两个记录器。参见 Logger example。为避免必须将同一件事记录两次带来的不便,您可以编写自己的 "splitter" 函数来包装记录器并将相同的消息记录到两者。

这是一个简单的例子。

#include "Poco/Logger.h"
using Poco::Logger;
int main(int argc, char** argv)
{
    Logger& logger = Logger::get("TestLogger");
    logger.information("This is an informational message");
    logger.warning("This is a warning message");
    return 0;
}

更多详情:

https://pocoproject.org/slides/110-Logging.pdf

这里有一些关于其他 Poco 子系统的有价值的幻灯片

https://pocoproject.org/slides/

我希望链接不会被破坏 :)