我正在使用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");
}
为什么会出现分段错误?如何设置要在多个源文件之间共享的记录器?