discard policies on queue overflow

This commit is contained in:
Denis Ivaykin
2015-01-14 15:35:01 -06:00
parent 0f3f65e07c
commit 365d895482
6 changed files with 31 additions and 19 deletions

View File

@@ -62,7 +62,7 @@ public:
return found->second;
std::shared_ptr<logger> new_logger;
if (_async_mode)
new_logger = std::make_shared<async_logger>(logger_name, sinks_begin, sinks_end, _async_q_size, _worker_warmup_cb);
new_logger = std::make_shared<async_logger>(logger_name, sinks_begin, sinks_end, _async_q_size, _overflow_policy, _worker_warmup_cb);
else
new_logger = std::make_shared<logger>(logger_name, sinks_begin, sinks_end);
@@ -120,12 +120,13 @@ public:
l.second->set_level(log_level);
}
void set_async_mode(size_t q_size, const std::function<void()>& worker_warmup_cb = nullptr)
void set_async_mode(size_t q_size, const async_queue_overflow_policy overflow_policy, const std::function<void()>& worker_warmup_cb)
{
std::lock_guard<std::mutex> lock(_mutex);
_async_mode = true;
_async_q_size = q_size;
_worker_warmup_cb = worker_warmup_cb;
_overflow_policy = overflow_policy;
_worker_warmup_cb = worker_warmup_cb;
}
void set_sync_mode()
@@ -151,7 +152,8 @@ private:
level::level_enum _level = level::info;
bool _async_mode = false;
size_t _async_q_size = 0;
std::function<void()> _worker_warmup_cb = nullptr;
async_queue_overflow_policy _overflow_policy = async_queue_overflow_policy::block_retry;
std::function<void()> _worker_warmup_cb = nullptr;
};
}
}