gpt4 book ai didi

c++ - 如何将控制台 (stdout) 添加为 g3log 中的接收器?

转载 作者:行者123 更新时间:2023-11-30 05:09:53 24 4
gpt4 key购买 nike

我是 g3log 的新手。我编译并运行了我在 repo 中找到的示例之一,但无法修改它以将日志消息打印到控制台而不是文件。示例中的以下几行设置了记录器:

   auto worker = g3::LogWorker::createLogWorker();
auto handle= worker->addDefaultLogger(argv[0], path_to_log_file);
g3::initializeLogging(worker.get());

中间的行设置了日志的前缀,并给出了创建日志文件的路径。我如何修改此代码以打印到控制台\控制台和文件?

谢谢,

奥马尔。

最佳答案

您可以定义一个带有消息接收函数的自定义接收器类,用于转发将消息剥离到控制台而无需格式化。下面是最简单的实现形式:

class CustomSink {
public:
void forwardLogToStdout(g3::LogMessageMover logEntry) {
std::cout << logEntry.get().message() << std::endl;
}
};

因此,在您的代码中,您只需将 worker->addDefaultLogger(...) 替换为以下代码片段:

auto handle = worker->addSink(std::make_unique<CustomSink>(), &CustomSink::forwardLogToStdout);

关于c++ - 如何将控制台 (stdout) 添加为 g3log 中的接收器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45941252/

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