首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向spdlog的标志中添加变量

如何向spdlog的标志中添加变量
EN

Stack Overflow用户
提问于 2022-07-16 09:49:18
回答 1查看 171关注 0票数 0

我想使用spdlog来记录我的代码。在我的代码中,有一个重要的变量用于模拟步骤,我希望它总是显示在我的日志中。这是我想要的格式。

代码语言:javascript
复制
[log_level][the_special_variable][logger_name] messages

那么,如何格式化记录器呢?还是没办法这么做?

编辑:对不起,我不擅长用英语提问。

我在spdlog的github中读过Readme.md,我看到了这个

代码语言:javascript
复制
// Log patterns can contain custom flags.
// the following example will add new flag '%*' - which will be bound to a <my_formatter_flag> instance.
#include "spdlog/pattern_formatter.h"
class my_formatter_flag : public spdlog::custom_flag_formatter
{
public:
    void format(const spdlog::details::log_msg &, const std::tm &, spdlog::memory_buf_t &dest) override
    {
        std::string some_txt = "custom-flag";
        dest.append(some_txt.data(), some_txt.data() + some_txt.size());
    }

    std::unique_ptr<custom_flag_formatter> clone() const override
    {
        return spdlog::details::make_unique<my_formatter_flag>();
    }
};

void custom_flags_example()
{    
    auto formatter = std::make_unique<spdlog::pattern_formatter>();
    formatter->add_flag<my_formatter_flag>('*').set_pattern("[%n] [%*] [%^%l%$] %v");
    spdlog::set_formatter(std::move(formatter));
}

但我不明白它的用法。它似乎只能为自定义标志添加一个字符串。如果可以显示一个int变量的话,我想看一下。

EN

回答 1

Stack Overflow用户

发布于 2022-07-16 10:31:51

是的,将int添加到日志消息中是可以的,您只需将其压缩即可。例如,在format方法中:

代码语言:javascript
复制
auto str = std::to_string(my_special_int_variable);
dest.append(...);

唯一的问题是如何使您的int var在格式化程序中可用。上面的例子假设它是一个全局变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73003181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档