I'm using spdlog and trying to create a logger object to be shared between multiple source files. However, whenever I use the built in spdlog::get() function it results in a segmentation fault error.
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;
}
bar.h
#ifndef BAR_H
#define BAR_H
void loggerTest();
#endif
bar.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");
}
Why am I getting a segmentation fault error? How do I setup a logger to be shared between multiple source files?