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

时间:2015-04-02 13:12:39

标签: logging poco-libraries

我现在拥有的:

  • Windows事件频道
  • 简单文件频道
  • 路由到两个频道的分离器频道
  • 根据PRIO_INFORMATION级别设置的根记录器

//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事件频道级别:警告
  • 文件渠道级别:信息

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

这可以通过标准的Poco :: Logger以某种方式实现吗?

1 个答案:

答案 0 :(得分:1)

记录级别是每个Logger,而不是每个Channel,因此您必须拥有两个记录器。见Logger example。为了避免不必两次记录相同的东西,你可以编写自己的"分离器"包装记录器并将相同的消息记录到两者的函数。