pull/104/merge
Alexandre Petitjean 10 years ago
commit a399c29ff5

@ -37,6 +37,7 @@
#include "../logger.h" #include "../logger.h"
#include "../async_logger.h" #include "../async_logger.h"
#include "../common.h" #include "../common.h"
#include "../sinks/null_sink.h"
namespace spdlog namespace spdlog
{ {
@ -57,7 +58,7 @@ public:
{ {
std::lock_guard<Mutex> lock(_mutex); std::lock_guard<Mutex> lock(_mutex);
auto found = _loggers.find(logger_name); auto found = _loggers.find(logger_name);
return found == _loggers.end() ? nullptr : found->second; return found == _loggers.end() ? _default_logger : found->second;
} }
template<class It> template<class It>
@ -144,6 +145,12 @@ public:
_async_mode = false; _async_mode = false;
} }
void set_default_logger(std::shared_ptr<logger> default_logger)
{
std::lock_guard<Mutex> lock(_mutex);
_default_logger = default_logger;
}
static registry_t<Mutex>& instance() static registry_t<Mutex>& instance()
{ {
static registry_t<Mutex> s_instance; static registry_t<Mutex> s_instance;
@ -158,7 +165,10 @@ private:
throw spdlog_ex("logger with name " + logger_name + " already exists"); throw spdlog_ex("logger with name " + logger_name + " already exists");
_loggers[logger->name()] = logger; _loggers[logger->name()] = logger;
} }
registry_t<Mutex>(){} registry_t<Mutex>()
{
_default_logger = std::make_shared<spdlog::logger>("null", std::make_shared<spdlog::sinks::null_sink<Mutex>>());
}
registry_t<Mutex>(const registry_t<Mutex>&) = delete; registry_t<Mutex>(const registry_t<Mutex>&) = delete;
registry_t<Mutex>& operator=(const registry_t<Mutex>&) = delete; registry_t<Mutex>& operator=(const registry_t<Mutex>&) = delete;
Mutex _mutex; Mutex _mutex;
@ -170,6 +180,7 @@ private:
async_overflow_policy _overflow_policy = async_overflow_policy::block_retry; async_overflow_policy _overflow_policy = async_overflow_policy::block_retry;
std::function<void()> _worker_warmup_cb = nullptr; std::function<void()> _worker_warmup_cb = nullptr;
std::chrono::milliseconds _flush_interval_ms; std::chrono::milliseconds _flush_interval_ms;
std::shared_ptr<logger> _default_logger;
}; };
#ifdef SPDLOG_NO_REGISTRY_MUTEX #ifdef SPDLOG_NO_REGISTRY_MUTEX
typedef registry_t<spdlog::details::null_mutex> registry; typedef registry_t<spdlog::details::null_mutex> registry;

@ -147,6 +147,11 @@ inline void spdlog::set_sync_mode()
details::registry::instance().set_sync_mode(); details::registry::instance().set_sync_mode();
} }
inline void spdlog::set_default_logger(std::shared_ptr<spdlog::logger> logger)
{
details::registry::instance().set_default_logger(logger);
}
inline void spdlog::drop_all() inline void spdlog::drop_all()
{ {
details::registry::instance().drop_all(); details::registry::instance().drop_all();

@ -73,6 +73,12 @@ void set_async_mode(size_t queue_size, const async_overflow_policy overflow_poli
// Turn off async mode // Turn off async mode
void set_sync_mode(); void set_sync_mode();
//
// Set default logger
// Current default use a null sink
//
void set_default_logger(std::shared_ptr<logger> logger);
// //
// Create and register multi/single threaded rotating file logger // Create and register multi/single threaded rotating file logger
// //

Loading…
Cancel
Save