自版本39cdd08开始,spdlog在记录日志时不会抛出异常。
在构造日志记录器或sink时可能会抛出异常,因为这被认为是致命的。
如果在记录日志期间发生错误,该库将向stderr打印错误消息。为了避免屏幕被大量错误消息淹没,每个日志记录器的错误消息打印速率被限制为每分钟1条。
可以通过调用spdlog::set_error_handler(new_handler_fun)或logger->set_error_handler(new_handler_fun)来更改此行为:
全局更改错误处理程序:
spdlog::set_error_handler([](const std::string& msg) {
std::cerr << "my err handler: " << msg << std::endl;
});
对于特定的日志记录器:
critical_logger->set_error_handler([](const std::string& msg) {
throw std::runtime_error(msg);
});
默认的错误处理程序 `_default_err_handler` 将使用以下方式打印错误:
fmt::print(stderr, "[*** LOG ERROR ***] [{}] [{}] {}\n", date_buf, name(), msg);
本文介绍了C++日志库spdlog从39cdd08版本开始如何处理错误,强调在记录日志时不抛出异常,而是通过向stderr输出错误消息。错误打印频率限制为每分钟一条,用户可通过设置自定义错误处理函数进行更改。
1218

被折叠的 条评论
为什么被折叠?



