【问题标题】:How to get the current spdlog level?如何获取当前的 spdlog 级别?
【发布时间】:2018-10-20 21:58:01
【问题描述】:

我需要在某些代码之前关闭spdlog级别,然后将其返回到之前的值。

如何在关闭之前获取当前级别?

【问题讨论】:

    标签: c++ logging log-level spdlog


    【解决方案1】:

    要获取当前记录器级别,请使用logger::level()

    要设置新级别,请使用logger::set_level()

    【讨论】:

      【解决方案2】:

      场景一:用户自建记录器

      如果您正在使用 spdlog::logger 对象(例如,my_logger),那么:

      • 您可以通过my_logger.level()获取等级。
      • 如果您只想知道是否会记录某个级别的消息,请使用my_logger.should_log(some_level),其中some_level 可能是,例如spdlog::level::debug

      场景 2:全局记录器

      现在假设您正在使用全局记录器(例如,您使用 spdlog::info()spdlog::error() 等发出日志消息)。

      spdlog 1.8.0 及更高版本

      您可以通过调用spdlog::get_level()(这是一个独立的函数,而不是一个方法)来获取全局日志级别。

      spdlog 1.8.0 之前的版本

      您需要掌握隐式记录器对象 - 通过调用spdlog::default_logger_raw()(它会为您提供一个指针。)现在只需按照上面的场景 1 进行操作即可。

      【讨论】:

        【解决方案3】:

        现在似乎有一个函数可以获取全局日志记录级别:

        spdlog::get_level();
        

        【讨论】:

        • spdlog::get_level() 被添加到v1.8.0
        • 我冒昧地将您的答案和@Corey 的评论整合到我的答案中;但是+1。
        • @einpoklum 随意:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        • 2010-11-29
        • 2016-02-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多