17#ifndef TOOLBOX_SYS_LOGGER_HPP
18#define TOOLBOX_SYS_LOGGER_HPP
25#include <boost/lockfree/queue.hpp>
26#include <boost/lockfree/stack.hpp>
56using LogBufPool = boost::lockfree::stack<LogMsgPtr, boost::lockfree::capacity<LogBufPoolCapacity>>;
125 bool warming_fake) noexcept
127 do_write_log(ts, level, tid, std::move(msg),
size, warming_fake);
132 std::size_t size,
bool warming_fake)
noexcept
165 void write_all_messages();
167 std::size_t size,
bool warming_fake)
noexcept override;
170 boost::lockfree::queue<Task, boost::lockfree::fixed_sized<false>> tq_{512};
171 std::atomic<bool> stop_{
false};
174 std::atomic<int> fake_pushed_count_{0};
175 std::atomic<WallTime> last_time_fake_pushed_{};
176 static_assert(std::atomic<WallTime>::is_always_lock_free,
"atomic not lock free");
223template <
typename StreamT>
ostream & operator<<(ostream &os, const pair< T, U > &p)