我正在使用spdlog并尝试创建一个日志对象,以便在多个源文件之间共享。然而,每当我使用内置的spdlog::get()函数时,都会导致分段错误。
foo.cpp
#include "bar.h" #include "spdlog/spdlog.h" #include "spdlog/sinks/stdout_color_sinks.h" #include "spdlog/sinks/basic_file_sink.h" int main() { // Create log sinks w/ destinations auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>(); auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("logs/myLogFile.log", true); // Format logging statements console_sink->set_pattern("[%Y-%m-%d %H:%M:%S] [%n] [%^%l%$] %v"); file_sink->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [Thread:%t] [%n] [%l] %v"); // Create multi-sink logger object spdlog::logger myLogger("myLogger", {console_sink, file_sink}); myLogger.info("Hello World! - foo.cpp"); loggerTest(); return 0; }
巴.h
#ifndef BAR_H #define BAR_H void loggerTest(); #endif
棒.cpp
#include "bar.h" #include "spdlog/spdlog.h" void loggerTest() { std::shared_ptr<spdlog::logger> myLogger = spdlog::get("myLogger"); myLogger->info("Hello World! - bar.cpp"); }
为什么会出现分段错误?如何设置要在多个源文件之间共享的记录器?