spdlog日式库

1. 结构

分为registry、loger、sink三个层次
loger实例化后,调用spdlog::register则会全局注册,之后通过sdplog::get(LOGNAME)则可获取到对应的loger。
sink实例化后,通过loger的构造函数可以将sink注册到loger中,支持多个sink注册到同一个loger中。

  • spdlog的默认logger
    在spdlog中,如果没有显式声明或注册任何logger,spdlog会自动创建一个名为空的logger,并将其注册为全局默认logger。这个logger将输出到标准输出,并使用默认的日志级别(即info级别)。因此,如果你没有显式声明或注册任何logger,你可以使用以下代码获取默认logger:
    auto logger = spdlog::get("default");
    

注意,如果你显式声明或注册了任何logger,那么默认logger将不再自动创建和注册。

  • spdlogn哪些接口会自动注册logger
    在spdlog中,以下接口会自动注册logger:
  1. spdlog::stdout_logger()和spdlog::stderr_logger():这些函数分别返回一个输出到标准输出和标准错误的logger,并使用默认名称"sink"注册该logger。

  2. spdlog::basic_logger():这个函数返回一个输出到文件的logger,并使用默认名称"sink"注册该logger。

  3. spdlog::rotating_logger()和spdlog::daily_logger():这些函数分别返回一个按文件大小和按日期滚动的logger,并使用默认名称"sink"注册该logger。如果你使用这些函数创建logger,你可以使用spdlog::get函数来获取已经注册的logger。例如,如果你使用spdlog::stdout_logger()函数创建了一个logger,你可以使用以下代码获取该logger:

auto logger = spdlog::get("sink");

注意,如果你使用spdlog::basic_logger()、spdlog::rotating_logger()或spdlog::daily_logger()函数创建logger时指定了名称,那么该logger将使用指定的名称进行注册,而不是默认名称"sink"。

2. 实现跨平台日志

// Android example.
#if defined(__ANDROID__)
#include "spdlog/sinks/android_sink.h"
void set_default()
{
    std::string tag = "spdlog-android";
    auto android_logger = spdlog::android_logger_mt("android", tag);
    android_logger->set_level(spdlog::level::trace);
    spdlog::set_default_logger(android_logger);
}
#else
void set_default()
{
}
#endif
int main()
{
    set_default();
    spdlog::info("Welcome to spdlog!");
    return 0;
}

ref:

  1. 《spdlog》
  2. spglog example source code
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值