8 #include <unordered_map> 45 :my(
std::move(l.my)){}
61 return e >= my->_level;
67 for(
auto itr = my->_appenders.begin(); itr != my->_appenders.end(); ++itr )
70 if( my->_additivity && my->_parent !=
nullptr) {
82 static std::unordered_map<std::string,logger>* lm =
new std::unordered_map<std::string, logger>();
83 (void)force_link_default_config;
100 { my->_appenders.push_back(a); }
104 auto item = std::find(my->_appenders.begin(), my->_appenders.end(), a);
105 if (item != my->_appenders.end())
106 my->_appenders.erase(item);
111 return my->_appenders;
static logging_config default_config()
logger get_parent() const
Defines types and helper macros necessary for generating log messages.
void set_name(const std::string &n)
void add_appender(const appender::ptr &a)
logger & set_parent(const logger &l)
modified spin-lock that yields on failure, but becomes a 'spin lock' if there are no other tasks to y...
static logger get(const std::string &name="default")
std::unordered_map< std::string, logger > & get_logger_map()
std::vector< appender::ptr > get_appenders() const
log_context get_context() const
friend bool operator!=(const logger &, std::nullptr_t)
friend bool operator==(const logger &, std::nullptr_t)
std::vector< appender::ptr > _appenders
std::shared_ptr< appender > ptr
void configure_logging(const fc::path &log_config)
void append_context(const std::string &c)
logger & set_log_level(log_level e)
aggregates a message along with the context and associated meta-information.
logger & operator=(const logger &)
void remove_appender(const appender::ptr &a)
log_level get_log_level() const
const std::string & name() const
bool is_enabled(log_level e) const