34 template <
typename T,
size_t N>
35 constexpr
static bool includes(
const T e,
const T (&l)[N],
const size_t i = 0) {
36 return i < N && (l[i] == e || includes(e, l, i + 1));
45 template <
typename ...Args>
50 template <
typename ...Args>
55 template <
typename ...Args>
60 template <
typename ...Args>
65 template <
typename ...Args>
70 record(severity, event, ::std::forward<Args>(args)...);
75 static Log* get() noexcept;
82 const
std::
string& msg,
83 const
std::optional<
std::
string>& threadName);
90 const
std::unique_ptr<Impl> impl;
virtual ~Observer()=default
virtual bool onRecord(EventSeverity severity, Event event, int64_t code, const std::string &msg)=0
static void Debug(Event event, Args &&...args)
static void Record(EventSeverity severity, Event event, Args &&...args)
static void Error(Event event, Args &&...args)
static std::unique_ptr< Observer > removeObserver()
static void Warning(Event event, Args &&...args)
static void useLogThread(bool enable)
static void setObserver(std::unique_ptr< Observer > Observer)
static void Info(Event event, Args &&...args)
std::unique_ptr< Expression > string(std::unique_ptr< Expression >, std::unique_ptr< Expression > def=nullptr)
constexpr Event disabledEvents[]
constexpr EventPermutation disabledEventPermutations[]
constexpr EventSeverity disabledEventSeverities[]