4 #define BOOST_LOG_DYN_LINK 1
6 #include "generated_config.hpp"
17 #include <shared_mutex>
25 #include <boost/log/attributes/current_thread_id.hpp>
26 #include <boost/log/sources/severity_logger.hpp>
27 #include <boost/log/sources/record_ostream.hpp>
28 #include <boost/date_time.hpp>
31 #define COLOR_ERROR "\033[31m"
33 #define COLOR_WARNING "\033[33m"
35 #define COLOR_INFO "\033[32m"
37 #define COLOR_DEBUG "\033[36m"
40 template <
class _CharT,
class _Traits,
typename Type,
size_t N,
size_t Last>
44 print(std::basic_ostream<_CharT, _Traits> & out,
const Type & value) noexcept
46 out << std::get<N>(value) <<
", ";
47 tuple_printer<_CharT, _Traits, Type, N + 1, Last>::print(out, value);
51 template <
class _CharT,
class _Traits,
typename Type,
size_t N>
52 struct tuple_printer<_CharT, _Traits, Type, N, N>
55 print(std::basic_ostream<_CharT, _Traits> & out,
const Type & value) noexcept
57 out << std::get<N>(value);
61 template <
class _CharT,
class _Traits,
typename... Types>
62 std::basic_ostream<_CharT, _Traits> &
63 operator<<(std::basic_ostream<_CharT, _Traits> & out,
64 const std::tuple<Types...> & value) noexcept
67 tuple_printer<_CharT, _Traits, std::tuple<Types...>, 0,
68 sizeof...(Types) - 1>::print(out, value);
73 template <
class T,
class _CharT,
class _Traits>
74 std::basic_ostream<_CharT, _Traits> &
75 operator<<(std::basic_ostream<_CharT, _Traits> & os,
76 const std::set<T> & set) noexcept
94 template <
class T1,
class T2,
class _CharT,
class _Traits>
95 std::basic_ostream<_CharT, _Traits> &
96 operator<<(std::basic_ostream<_CharT, _Traits> & os,
97 const std::pair<T1, T2> & pair) noexcept
100 os << pair.first <<
", " << pair.second;
105 template <
class T,
class _CharT,
class _Traits>
106 std::basic_ostream<_CharT, _Traits> &
107 operator<<(std::basic_ostream<_CharT, _Traits> & os,
const std::vector<T> & v) noexcept
111 for (
const auto & el : v) {
139 static std::map<boost::log::attributes::current_thread_id::value_type,
142 static std::shared_timed_mutex thread_id_map_mutex;
144 static std::locale get_locale() noexcept;
147 coloring_formatter(boost::log::record_view const & rec,
148 boost::log::formatting_ostream & strm) noexcept;
151 static
void setup() noexcept;
153 Log(std::
string component) noexcept;
155 boost::log::sources::severity_logger<severity> &
156 d(
unsigned int level = 0) const noexcept;
158 boost::log::sources::severity_logger<severity> & i() const noexcept;
160 boost::log::sources::severity_logger<severity> & n() const noexcept;
162 boost::log::sources::severity_logger<severity> & w() const noexcept;
164 boost::log::sources::severity_logger<severity> & e() const noexcept;
166 boost::log::sources::severity_logger<severity> & f() const noexcept;
170 boost::log::sources::severity_logger<severity> filtered_logger;
172 std::array<boost::log::sources::severity_logger<severity>, MAX_DBG_LEVEL>
174 boost::log::sources::severity_logger<severity> i_logger;
175 boost::log::sources::severity_logger<severity> n_logger;
176 boost::log::sources::severity_logger<severity> w_logger;
177 boost::log::sources::severity_logger<severity> e_logger;
178 boost::log::sources::severity_logger<severity> f_logger;