36 lines
1.0 KiB
C++
36 lines
1.0 KiB
C++
|
|
#include "LoggerProvider.hh"
|
||
|
|
#include "MacroExt.hh"
|
||
|
|
|
||
|
|
#include <utility>
|
||
|
|
#include "../memories/instance_object.hpp"
|
||
|
|
|
||
|
|
namespace logging {
|
||
|
|
|
||
|
|
logging::LoggerProvider::LoggerProvider( std::pmr::memory_resource * mem, base::log_permit_flag global_permissions_, uint32_t on_cnt_ )
|
||
|
|
: loggers( collection::key_compare(), mem ), memory(mem), global_permissons(global_permissions_), global_on_count(on_cnt_) {}
|
||
|
|
|
||
|
|
Logger * logging::LoggerProvider::get_logger(Logger::Id idx, base::log_permit_flag permissons_, std::pmr::memory_resource * allocator) {
|
||
|
|
|
||
|
|
Logger * logger = nullptr;
|
||
|
|
collection::iterator found = loggers.find(idx);
|
||
|
|
|
||
|
|
if( found != loggers.end() ) {
|
||
|
|
|
||
|
|
logger = found->second;
|
||
|
|
|
||
|
|
} else {
|
||
|
|
|
||
|
|
unsigned int allowed_options = ( global_permissons & permissons_ );
|
||
|
|
std::pmr::memory_resource * mr = (allocator != nullptr) ? allocator : std::pmr::get_default_resource();
|
||
|
|
logger = memories::instance_object<Logger>(*mr, idx, allowed_options, global_on_count);
|
||
|
|
|
||
|
|
loggers[idx] =logger;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
return logger;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|