创建 Spdlog 异步文件记录器时遇到困难
Difficulty creating Spdlog asynchronous file logger
我正在尝试为我的应用程序制作一个不在主线程中运行的记录器。我正在使用一个包装类,记录器,围绕spdlog。该类有一个std::shared_ptr<spdlog::logger>
类型的私有静态数据成员,该成员在 init(( 函数中初始化。我能够成功创建一个spdlog::sinks::basic_file_sink_mt
但是当我尝试使用spd::async_factory
它无法编译时。
记录器.h
class Logger {
public:
static void init();
private:
static std::shared_ptr<spdlog:::logger> my_logger;
}
记录器.cpp
std::shared_ptr<spdlog::logger> Logger::my_logger;
void Logger::init() {
spdlog::sink_ptr my_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("myfile.log", true);
my_logger = std::make_shared<spdlog::logger>("Application", my_sink);
}
这个解决方案似乎有效。它记录到文件中,但问题是它在主线程中。我尝试通过将行std::make_shared<spdlog::sinks::basic_file_sink_mt>
更改为std::make_shared<spdlog::sinks::basic_file_sink_mt<spdlog::async_factory>>
来将记录器更新为异步,如下所示:
void Logger::init() {
spdlog::sink_ptr my_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt<spdlog::async_factory>>("myfile.log", true);
my_logger = std::make_shared<spdlog::logger>("Application", my_sink);
}
当我尝试这样做时,我收到编译错误。如何操作才能将成员变量设置为异步记录器?
感谢您阅读所有这些内容,并感谢您的帮助。
试试这个:
auto my_logger = spdlog::create_async<spdlog::sinks::basic_file_sink_mt>("async_file_logger", "myfile.log");
相关文章:
- 创建 Spdlog 异步文件记录器时遇到困难
- 如何将自定义记录器与websocketpp一起使用?
- 在C++中隐藏键盘记录器的控制台窗口
- 为什么Qt Creator的应用程序输出不能从spdlog记录器打印
- 麻烦得到提升::记录器编译
- 我正在尝试用 c++ 制作一个日志记录框架,但信息没有传递给记录器的子组件,我做错了什么?
- 多态记录器(虚拟模板化函数?
- 设置提升记录器的线程名称
- Boost Log的琐碎记录器"lazy evaluation"是如何工作的?
- boost::log 设置"Channel"通道记录器中的属性
- 区分键盘记录器中的密码和其他类型的键盘输入
- 记录器的流界面,C
- 如何监控Android和iOS上的所有击键操作,如Windows键盘记录器
- 如何声明和定义 Poco 记录器
- 记录器何时应刷新
- 带有 gtest 框架的 spdlog 记录器不起作用
- 使用常量字符*时如何使用带有模板的记录器
- 如何防止升压记录器在每条记录后添加?
- 异步记录器线程安全
- 记录器类的单例替代