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

Logger for advanced sinks. Derives from basic_logger, so the whole formatting/level/locking API is inherited unchanged. More...

#include <extended_logger.hpp>

Inheritance diagram for microfmt::log::extended_logger< MaxSinks, MsgBufferCapacity, Mutex >:
Inheritance graph
[legend]
Collaboration diagram for microfmt::log::extended_logger< MaxSinks, MsgBufferCapacity, Mutex >:
Collaboration graph
[legend]

Public Member Functions

RELOCO_BEGIN_UNSAFE_CODE void set_meta_callback (log_meta_callback cb, void *user=nullptr) noexcept
 
RELOCO_END_UNSAFE_CODE void log (const extended_log_msg &msg) const noexcept
 Dispatches a caller-built record with explicit metadata.
 
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
 
- Public Member Functions inherited from microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >
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
 

Additional Inherited Members

- Protected Member Functions inherited from microfmt::log::basic_logger< MaxSinks, MsgBufferCapacity, Mutex, Sink, Decorator >
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.
 

Detailed Description

template<std::size_t MaxSinks = 4, std::size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex>
class microfmt::log::extended_logger< MaxSinks, MsgBufferCapacity, Mutex >

Logger for advanced sinks. Derives from basic_logger, so the whole formatting/level/locking API is inherited unchanged.

// Describe the current context; decides whether a full sink may be waited on.
microfmt::log::log_meta describe_context(void *, const microfmt::log::log_msg &) noexcept {
m.pid = current_pid();
m.tid = current_tid();
m.cpu = current_cpu();
m.set(microfmt::log::log_flag::can_wait, !in_interrupt()); // IRQ: overwrite, never sleep
return m;
}
microfmt::log::extended_log_sink out = fan.as_sink(); // e.g. a fanout_log_sink
logger.set_meta_callback(&describe_context);
logger.info("boot {}", 1);
Definition logger.hpp:56
void info(microfmt::string_view fmt, const Args &...args) const noexcept
Definition logger.hpp:138
Type-erased handle to an advanced log sink backend, with a severity threshold. Same two-word-plus-vta...
Definition extended_sink.hpp:77
Logger for advanced sinks. Derives from basic_logger, so the whole formatting/level/locking API is in...
Definition extended_logger.hpp:70
basic_logger< 4, 256 > logger
Definition logger.hpp:242
Execution-context metadata attached to an extended_log_msg.
Definition extended_msg.hpp:32
constexpr void set(log_flag f, bool on=true) noexcept
Definition extended_msg.hpp:52
std::uint32_t pid
Definition extended_msg.hpp:36
std::uint32_t cpu
Definition extended_msg.hpp:38
std::uint32_t tid
Definition extended_msg.hpp:37
Structured log record forwarded by a logger to each sink.
Definition log_msg.hpp:69

Member Function Documentation

◆ log() [1/4]

template<std::size_t MaxSinks = 4, std::size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex>
RELOCO_END_UNSAFE_CODE void microfmt::log::extended_logger< MaxSinks, MsgBufferCapacity, Mutex >::log ( const extended_log_msg &  msg) const
inlinenoexcept

Dispatches a caller-built record with explicit metadata.

◆ log() [2/4]

template<std::size_t MaxSinks = 4, std::size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex>
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() [3/4]

template<std::size_t MaxSinks = 4, std::size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex>
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() [4/4]

template<std::size_t MaxSinks = 4, std::size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex>
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

◆ set_meta_callback()

template<std::size_t MaxSinks = 4, std::size_t MsgBufferCapacity = 256, typename Mutex = detail::null_mutex>
RELOCO_BEGIN_UNSAFE_CODE void microfmt::log::extended_logger< MaxSinks, MsgBufferCapacity, Mutex >::set_meta_callback ( log_meta_callback  cb,
void *  user = nullptr 
)
inlinenoexcept

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