Poco Logger更改消息参数

时间:2015-10-22 09:37:26

标签: c++ logging poco-libraries

我正在使用Poco :: Logger跟踪我的应用程序中的日志。

现在我想跟踪所有日志中变量的值。因为我不想改变之前输出线的每一行。我想在格式中将其设为默认值。

我检查了Poco日志系统的文档和教程,发现:

  
      
  • 消息可以存储任意数量的名称 - 值对。
  •   
  • 名称和值可以是任意字符串。
  •   
  • 可以在格式化程序中引用消息参数。
  •   

看起来就像我正在寻找的。但是我找不到关于这个的详细信息,似乎Poco :: logger创建了一个Poco :: Message本身。

有没有办法实现我想做的事情?感谢。

1 个答案:

答案 0 :(得分:2)

#include "Poco/Logger.h"
#include "Poco/AutoPtr.h"
#include "Poco/PatternFormatter.h"
#include "Poco/FormattingChannel.h"
#include "Poco/ConsoleChannel.h"
#include "Poco/Message.h"

using namespace Poco;

int main()
{
    Message msg;
    msg.setSource("MySource");
    msg.setText("My message text");
    msg["myParam"] = "My Param";

    AutoPtr<FormattingChannel> pFCConsole = new FormattingChannel(new PatternFormatter("%s: %[myParam], %t"));
    pFCConsole->setChannel(new ConsoleChannel);
    pFCConsole->open();

    Logger& consoleLogger = Logger::root(); // or whatever your logger is
    consoleLogger.setChannel(pFCConsole);
    consoleLogger.log(msg);

    return 0;
}

执行命令

$ ./Logger
MySource: My Param, My message text

目前仅支持std::string个自定义参数,因此如果值为数字,则必须进行转换。