7e32ccbd8f
Added: * Release/Debug job for gcc 7 and clang 3.5 * Debug asan gcc 7 job * Debug tsan gcc 7 job * Disabled extensions * Added a spdlog::spdlog alias for tests Removed: * Valgrind workaround, the current version is 3.10.1 * install_libcxx * Makefiles Fixed: * examples build * multisink build Workarounds: * gcc7 with tsan and asan needs gold linker, otherwise build fails becase of unrecognized option '--push-state'
48 lines
2.0 KiB
C++
48 lines
2.0 KiB
C++
#include "spdlog/sinks/basic_file_sink.h"
|
|
#include "spdlog/sinks/stdout_sinks.h"
|
|
#include "spdlog/spdlog.h"
|
|
#include <iostream>
|
|
#include <memory>
|
|
|
|
namespace spd = spdlog;
|
|
int main(int, char *[])
|
|
{
|
|
bool enable_debug = true;
|
|
try
|
|
{
|
|
// This other example use a single logger with multiple sinks.
|
|
// This means that the same log_msg is forwarded to multiple sinks;
|
|
// Each sink can have it's own log level and a message will be logged.
|
|
std::vector<spdlog::sink_ptr> sinks;
|
|
sinks.push_back(std::make_shared<spdlog::sinks::stdout_sink_mt>());
|
|
sinks.push_back(std::make_shared<spdlog::sinks::basic_file_sink_mt>("./log_regular_file.txt"));
|
|
sinks.push_back(std::make_shared<spdlog::sinks::basic_file_sink_mt>("./log_debug_file.txt"));
|
|
|
|
spdlog::logger console_multisink("multisink", sinks.begin(), sinks.end());
|
|
console_multisink.set_level(spdlog::level::warn);
|
|
|
|
sinks[0]->set_level(spdlog::level::trace); // console. Allow everything. Default value
|
|
sinks[1]->set_level(spdlog::level::trace); // regular file. Allow everything. Default value
|
|
sinks[2]->set_level(spdlog::level::off); // regular file. Ignore everything.
|
|
|
|
console_multisink.warn("warn: will print only on console and regular file");
|
|
|
|
if (enable_debug)
|
|
{
|
|
console_multisink.set_level(spdlog::level::debug); // level of the logger
|
|
sinks[1]->set_level(spdlog::level::debug); // regular file
|
|
sinks[2]->set_level(spdlog::level::debug); // debug file
|
|
}
|
|
console_multisink.debug("Debug: you should see this on console and both files");
|
|
|
|
// Release and close all loggers
|
|
spdlog::drop_all();
|
|
}
|
|
// Exceptions will only be thrown upon failed logger or sink construction (not during logging)
|
|
catch (const spd::spdlog_ex &ex)
|
|
{
|
|
std::cout << "Log init failed: " << ex.what() << std::endl;
|
|
return 1;
|
|
}
|
|
}
|