Poco Logger 更改 Message 参数
Poco Logger change Message parameters
我正在使用 Poco::Logger 来跟踪我的应用程序中的日志。
现在我想在我的所有日志中跟踪一个变量的值。因为我不想更改之前输出行的每一行。我想让它成为格式的默认值。
查阅了Poco日志系统的文档和教程,发现:
- A message can store an arbitrary number of name-value pairs.
- Names and values can be arbitrary strings.
- Message parameters can be referenced in a formatter.
这看起来正是我要找的。但是我找不到关于这个的详细信息,似乎 Poco::logger 自己创建了一个 Poco::Message。
有什么方法可以实现我想做的事情吗?谢谢
#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
个自定义参数,如果是数值的话需要进行转换。
我正在使用 Poco::Logger 来跟踪我的应用程序中的日志。
现在我想在我的所有日志中跟踪一个变量的值。因为我不想更改之前输出行的每一行。我想让它成为格式的默认值。
查阅了Poco日志系统的文档和教程,发现:
- A message can store an arbitrary number of name-value pairs.
- Names and values can be arbitrary strings.
- Message parameters can be referenced in a formatter.
这看起来正是我要找的。但是我找不到关于这个的详细信息,似乎 Poco::logger 自己创建了一个 Poco::Message。
有什么方法可以实现我想做的事情吗?谢谢
#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
个自定义参数,如果是数值的话需要进行转换。