microfmt
Zero-allocation C++ formatting for constrained environments
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | List of all members
microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator > Class Template Reference

#include <logger.hpp>

Inheritance diagram for microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >:
Inheritance graph
[legend]

Public Member Functions

constexpr basic_logger (microfmt::string_view name) noexcept
 
template<typename... Sinks>
requires (sizeof...(Sinks) <= MaxSinks)
constexpr basic_logger (microfmt::string_view name, Sinks... sinks) noexcept
 
bool add_sink (Sink s) noexcept
 
void set_level (level l) noexcept
 
constexpr level get_level () const noexcept
 
constexpr microfmt::string_view name () const &noexcept RELOCO_LIFETIMEBOUND
 
constexpr microfmt::string_view name () const &&=delete
 
bool should_log (level l) const noexcept
 
void log (const log_msg &msg) const noexcept
 Dispatches a caller-built log_msg directly to attached sinks.
 
template<typename... Args>
void log (level lvl, microfmt::string_view fmt_str, const Args &...args) const noexcept
 
template<typename StrProvider , typename... Args>
void log (level lvl, compile_string_holder< StrProvider > fmt_str, const Args &...args) const noexcept
 
template<typename... Args>
void trace (microfmt::string_view fmt, const Args &...args) const noexcept
 
template<typename StrProvider , typename... Args>
void trace (compile_string_holder< StrProvider > fmt, const Args &...args) const noexcept
 
template<typename... Args>
void debug (microfmt::string_view fmt, const Args &...args) const noexcept
 
template<typename StrProvider , typename... Args>
void debug (compile_string_holder< StrProvider > fmt, const Args &...args) const noexcept
 
template<typename... Args>
void info (microfmt::string_view fmt, const Args &...args) const noexcept
 
template<typename StrProvider , typename... Args>
void info (compile_string_holder< StrProvider > fmt, const Args &...args) const noexcept
 
template<typename... Args>
void warn (microfmt::string_view fmt, const Args &...args) const noexcept
 
template<typename StrProvider , typename... Args>
void warn (compile_string_holder< StrProvider > fmt, const Args &...args) const noexcept
 
template<typename... Args>
void error (microfmt::string_view fmt, const Args &...args) const noexcept
 
template<typename StrProvider , typename... Args>
void error (compile_string_holder< StrProvider > fmt, const Args &...args) const noexcept
 
template<typename... Args>
void critical (microfmt::string_view fmt, const Args &...args) const noexcept
 
template<typename StrProvider , typename... Args>
void critical (compile_string_holder< StrProvider > fmt, const Args &...args) const noexcept
 
void flush () const noexcept
 
template<typename... Args>
void log_loc (std::source_location loc, level lvl, microfmt::string_view fmt_str, const Args &...args) const noexcept
 
template<typename StrProvider , typename... Args>
void log_loc (std::source_location loc, level lvl, compile_string_holder< StrProvider > fmt_str, const Args &...args) const noexcept
 

Protected Member Functions

Decorator & decorator () &noexcept RELOCO_LIFETIMEBOUND
 The message decorator, e.g. to configure a metadata callback.
 
const Decorator & decorator () const &noexcept RELOCO_LIFETIMEBOUND
 
const Decorator & decorator () const &&=delete
 
template<typename Msg >
void dispatch (const Msg &msg) const noexcept
 Decorates msg (see Decorator) and hands it to every sink under the logger's lock. Decoration runs before locking so a callback may read thread-local state cheaply.
 

Constructor & Destructor Documentation

◆ basic_logger() [1/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
constexpr microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::basic_logger ( microfmt::string_view  name)
inlineexplicitconstexprnoexcept

◆ basic_logger() [2/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename... Sinks>
requires (sizeof...(Sinks) <= MaxSinks)
constexpr microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::basic_logger ( microfmt::string_view  name,
Sinks...  sinks 
)
inlineexplicitconstexprnoexcept

Member Function Documentation

◆ add_sink()

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
bool microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::add_sink ( Sink  s)
inlinenoexcept

◆ critical() [1/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename StrProvider , typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::critical ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ critical() [2/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::critical ( microfmt::string_view  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ debug() [1/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename StrProvider , typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::debug ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ debug() [2/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::debug ( microfmt::string_view  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ decorator() [1/3]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
Decorator & microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::decorator ( ) &
inlineprotectednoexcept

The message decorator, e.g. to configure a metadata callback.

◆ decorator() [2/3]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
const Decorator & microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::decorator ( ) const &&
protecteddelete

◆ decorator() [3/3]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
const Decorator & microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::decorator ( ) const &
inlineprotectednoexcept

◆ dispatch()

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename Msg >
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::dispatch ( const Msg &  msg) const
inlineprotectednoexcept

Decorates msg (see Decorator) and hands it to every sink under the logger's lock. Decoration runs before locking so a callback may read thread-local state cheaply.

◆ error() [1/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename StrProvider , typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::error ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ error() [2/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::error ( microfmt::string_view  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ flush()

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::flush ( ) const
inlinenoexcept

◆ get_level()

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
constexpr level microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::get_level ( ) const
inlineconstexprnoexcept

◆ info() [1/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename StrProvider , typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::info ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ info() [2/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::info ( microfmt::string_view  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ log() [1/3]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::log ( const log_msg &  msg) const
inlinenoexcept

Dispatches a caller-built log_msg directly to attached sinks.

Bypasses this logger's own formatting step, so msg.payload is forwarded to sinks verbatim. Still honors the logger's configured level threshold. Useful for advanced usage such as forwarding records from another logging system or replaying a previously formatted payload.

◆ log() [2/3]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename StrProvider , typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::log ( level  lvl,
compile_string_holder< StrProvider >  fmt_str,
const Args &...  args 
) const
inlinenoexcept

◆ log() [3/3]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::log ( level  lvl,
microfmt::string_view  fmt_str,
const Args &...  args 
) const
inlinenoexcept

◆ log_loc() [1/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename StrProvider , typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::log_loc ( std::source_location  loc,
level  lvl,
compile_string_holder< StrProvider >  fmt_str,
const Args &...  args 
) const
inlinenoexcept

◆ log_loc() [2/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::log_loc ( std::source_location  loc,
level  lvl,
microfmt::string_view  fmt_str,
const Args &...  args 
) const
inlinenoexcept

◆ name() [1/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
constexpr microfmt::string_view microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::name ( ) const &&
constexprdelete

◆ name() [2/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
constexpr microfmt::string_view microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::name ( ) const &
inlineconstexprnoexcept

◆ set_level()

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::set_level ( level  l)
inlinenoexcept

◆ should_log()

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
bool microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::should_log ( level  l) const
inlinenoexcept

◆ trace() [1/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename StrProvider , typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::trace ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ trace() [2/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::trace ( microfmt::string_view  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ warn() [1/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename StrProvider , typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::warn ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
) const
inlinenoexcept

◆ warn() [2/2]

template<size_t MaxSinks = 4, size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex, typename Sink = log_sink, typename Decorator = detail::identity_decorator>
template<typename... Args>
void microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >::warn ( microfmt::string_view  fmt,
const Args &...  args 
) const
inlinenoexcept

The documentation for this class was generated from the following file: