microfmt
Zero-allocation C++ formatting for constrained environments
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
microfmt::log Namespace Reference

Namespaces

namespace  detail
 Fixed-capacity logger that formats records before dispatching to sinks.
 

Classes

class  android_log_sink
 Adapter that writes structured records to Android logcat. More...
 
struct  android_log_sink_tag
 Tag selecting android_log_sink<MessageCapacity, TagCapacity> as a log_sink backend. More...
 
class  basic_logger
 
class  condition_variable_wait_channel
 Hosted wait channel: a reloco::mutex plus reloco::condition_variable. More...
 
struct  extended_log_msg
 log_msg plus log_meta. Derives from the original record, so it converts to const log_msg & anywhere the plain API is expected. More...
 
class  extended_log_sink
 Type-erased handle to an advanced log sink backend, with a severity threshold. Same two-word-plus-vtable shape as log_sink. More...
 
struct  extended_log_sink_traits
 Customization point for extended_log_sink backends. More...
 
struct  extended_log_sink_traits< fanout_log_sink_tag< MaxSinks, Channel > >
 
class  extended_logger
 Logger for advanced sinks. Derives from basic_logger, so the whole formatting/level/locking API is inherited unchanged. More...
 
class  fanout_log_sink
 Fixed-capacity sink that forwards each record to up to MaxSinks advanced sinks ("pins"), applies back-pressure when one is full, and keeps thread-context writers in FIFO order. Nothing here busy-waits. More...
 
struct  fanout_log_sink_tag
 
class  kernel_log_sink
 Adapter that writes structured records to the FreeBSD kernel's log(9). More...
 
struct  kernel_log_sink_tag
 Tag selecting kernel_log_sink as a log_sink backend. More...
 
struct  log_meta
 Execution-context metadata attached to an extended_log_msg. More...
 
struct  log_msg
 Structured log record forwarded by a logger to each sink. More...
 
class  log_sink
 Type-erased, two-word handle to a log sink backend, plus the severity threshold below which records are dropped before ever reaching the backend. More...
 
struct  log_sink_traits
 Static customization point describing a log sink backend. More...
 
struct  log_sink_traits< android_log_sink_tag< MessageCapacity, TagCapacity > >
 
struct  log_sink_traits< kernel_log_sink_tag >
 
struct  log_sink_traits< ring_buffer_log_sink_tag >
 
struct  log_sink_traits< stdout_color_sink_tag< LineBufCap > >
 
struct  log_sink_traits< syslog_sink_tag< Capacity > >
 
struct  log_sink_traits< systemd_sink_tag< MessageCapacity, IdentifierCapacity > >
 
struct  log_sink_traits< tizen_dlog_sink_tag< TagCapacity > >
 
class  meta_decorator
 Decorator turning a plain log_msg into an extended_log_msg. More...
 
struct  null_wait_channel
 Wait channel that never sleeps: wait_for just evaluates the predicate once. Use for single-threaded or "discard when full" setups. More...
 
struct  ring_buffer_log_header
 Binary framing header. Embedding the logger_name directly guarantees we only have one dynamic payload span to append. More...
 
class  ring_buffer_log_reader
 Pull-based reader for extracting structured logs via RAII transactions. Natively supports the reloco/rust functional iterator pipeline. More...
 
class  ring_buffer_log_sink
 A log sink that serializes structured logs into a byte-oriented ring_buffer. Uses try_write_frame_evicting to safely auto-evict oldest frames without shredding data. More...
 
struct  ring_buffer_log_sink_tag
 
class  space_notifier
 Type-erased "space was freed" callback handed to the consumer side of a sink (two words, no allocation). More...
 
struct  split_string_view
 Represents string data that may cross the circular array boundary. More...
 
class  stdout_color_sink
 ANSI-colorized stdout adapter for structured log records. More...
 
struct  stdout_color_sink_tag
 Tag selecting stdout_color_sink<LineBufCap> as a log_sink backend. More...
 
class  syslog_sink
 Adapter that writes structured records to POSIX syslog. More...
 
struct  syslog_sink_tag
 Tag selecting syslog_sink<Capacity> as a log_sink backend. More...
 
class  systemd_sink
 Adapter that writes structured records to the systemd journal. More...
 
struct  systemd_sink_tag
 Tag selecting systemd_sink<MessageCapacity, IdentifierCapacity> as a log_sink backend. More...
 
class  tizen_dlog_sink
 Adapter that writes structured records to Tizen DLOG. More...
 
struct  tizen_dlog_sink_tag
 Tag selecting tizen_dlog_sink<TagCapacity> as a log_sink backend. More...
 

Typedefs

using log_meta_callback = log_meta(*)(void *user, const log_msg &msg) noexcept
 Metadata callback: describes the current execution context.
 
using logger = basic_logger< 4, 256 >
 

Enumerations

enum class  log_flag : std::uint32_t { none = 0 , can_wait = 1U << 0 }
 Well-known bits of log_meta::flags. Bits 16..31 belong to the user. More...
 
enum class  level : uint8_t {
  trace = 0 , debug , info , warn ,
  err , critical , off
}
 Shared log severity levels in ascending order. More...
 

Functions

constexpr microfmt::string_view to_string_view (level lvl) noexcept
 
constexpr microfmt::string_view to_short_string (level lvl) noexcept
 
logger * default_logger () noexcept
 Returns the configured default logger, or nullptr when unset.
 
void set_default_logger (logger *instance) noexcept
 Sets or clears the process-default logger used by free helpers.
 
template<typename... Args>
void trace (microfmt::string_view fmt, const Args &...args) noexcept
 
template<typename StrProvider , typename... Args>
void trace (compile_string_holder< StrProvider > fmt, const Args &...args) noexcept
 
template<typename... Args>
void debug (microfmt::string_view fmt, const Args &...args) noexcept
 
template<typename StrProvider , typename... Args>
void debug (compile_string_holder< StrProvider > fmt, const Args &...args) noexcept
 
template<typename... Args>
void info (microfmt::string_view fmt, const Args &...args) noexcept
 
template<typename StrProvider , typename... Args>
void info (compile_string_holder< StrProvider > fmt, const Args &...args) noexcept
 
template<typename... Args>
void warn (microfmt::string_view fmt, const Args &...args) noexcept
 
template<typename StrProvider , typename... Args>
void warn (compile_string_holder< StrProvider > fmt, const Args &...args) noexcept
 
template<typename... Args>
void error (microfmt::string_view fmt, const Args &...args) noexcept
 
template<typename StrProvider , typename... Args>
void error (compile_string_holder< StrProvider > fmt, const Args &...args) noexcept
 
template<typename... Args>
void critical (microfmt::string_view fmt, const Args &...args) noexcept
 
template<typename StrProvider , typename... Args>
void critical (compile_string_holder< StrProvider > fmt, const Args &...args) noexcept
 
 android_log_sink () -> android_log_sink<>
 
 android_log_sink (microfmt::string_view) -> android_log_sink<>
 
 android_log_sink (microfmt::string_view, void(*)(int, microfmt::string_view, microfmt::string_view) noexcept) -> android_log_sink<>
 
class RELOCO_POINTER RELOCO_CONSUMABLE (unconsumed) log_record_tx
 RAII Transaction holding an unconsumed log record.
 
 syslog_sink () -> syslog_sink<>
 
 syslog_sink (void(*)(int, microfmt::string_view) noexcept) -> syslog_sink<>
 
 systemd_sink () -> systemd_sink<>
 
 systemd_sink (void(*)(int, microfmt::string_view, microfmt::string_view) noexcept) -> systemd_sink<>
 
 tizen_dlog_sink () -> tizen_dlog_sink<>
 
 tizen_dlog_sink (microfmt::string_view) -> tizen_dlog_sink<>
 
 tizen_dlog_sink (microfmt::string_view, void(*)(int, microfmt::string_view, microfmt::string_view) noexcept) -> tizen_dlog_sink<>
 

Variables

constexpr std::uint32_t no_cpu = 0xFFFFFFFFU
 CPU index value meaning "unknown".
 
constexpr std::uint64_t wait_forever = ~std::uint64_t{0}
 timeout_us value meaning "wait without a deadline".
 

Typedef Documentation

◆ log_meta_callback

using microfmt::log::log_meta_callback = typedef log_meta (*)(void *user, const log_msg &msg) noexcept

Metadata callback: describes the current execution context.

Fills pid/tid/cpu and, most importantly, log_flag::can_wait, which tells sinks whether the caller may block when a sink is full. It runs on every record on the emitting context, so it must be cheap and context-safe (no allocation, no blocking).

◆ logger

using microfmt::log::logger = typedef basic_logger<4, 256>

Enumeration Type Documentation

◆ level

enum class microfmt::log::level : uint8_t
strong

Shared log severity levels in ascending order.

Enumerator
trace 
debug 
info 
warn 
err 
critical 
off 

◆ log_flag

enum class microfmt::log::log_flag : std::uint32_t
strong

Well-known bits of log_meta::flags. Bits 16..31 belong to the user.

Enumerator
none 
can_wait 

The emitting context may block (thread context). When clear (IRQ, NMI, scheduler, ...) a full sink must not wait: it overwrites its oldest data or discards the record.

Function Documentation

◆ android_log_sink() [1/3]

◆ android_log_sink() [2/3]

microfmt::log::android_log_sink ( microfmt::string_view  ) -> android_log_sink<>

◆ android_log_sink() [3/3]

microfmt::log::android_log_sink ( microfmt::string_view  ,
void(*)(int, microfmt::string_view, microfmt::string_view)  noexcept 
) -> android_log_sink<>

◆ critical() [1/2]

template<typename StrProvider , typename... Args>
void microfmt::log::critical ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
)
inlinenoexcept

◆ critical() [2/2]

template<typename... Args>
void microfmt::log::critical ( microfmt::string_view  fmt,
const Args &...  args 
)
inlinenoexcept

◆ debug() [1/2]

template<typename StrProvider , typename... Args>
void microfmt::log::debug ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
)
inlinenoexcept

◆ debug() [2/2]

template<typename... Args>
void microfmt::log::debug ( microfmt::string_view  fmt,
const Args &...  args 
)
inlinenoexcept

◆ default_logger()

logger * microfmt::log::default_logger ( )
inlinenoexcept

Returns the configured default logger, or nullptr when unset.

◆ error() [1/2]

template<typename StrProvider , typename... Args>
void microfmt::log::error ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
)
inlinenoexcept

◆ error() [2/2]

template<typename... Args>
void microfmt::log::error ( microfmt::string_view  fmt,
const Args &...  args 
)
inlinenoexcept

◆ info() [1/2]

template<typename StrProvider , typename... Args>
void microfmt::log::info ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
)
inlinenoexcept

◆ info() [2/2]

template<typename... Args>
void microfmt::log::info ( microfmt::string_view  fmt,
const Args &...  args 
)
inlinenoexcept

◆ RELOCO_CONSUMABLE()

class RELOCO_POINTER microfmt::log::RELOCO_CONSUMABLE ( unconsumed  )

RAII Transaction holding an unconsumed log record.

Consumes the bytes from the underlying ring buffer permanently.

Aborts the transaction without consuming bytes (also happens implicitly on destruction).

◆ set_default_logger()

void microfmt::log::set_default_logger ( logger *  instance)
inlinenoexcept

Sets or clears the process-default logger used by free helpers.

◆ syslog_sink() [1/2]

◆ syslog_sink() [2/2]

microfmt::log::syslog_sink ( void(*)(int, microfmt::string_view)  noexcept) -> syslog_sink<>

◆ systemd_sink() [1/2]

◆ systemd_sink() [2/2]

microfmt::log::systemd_sink ( void(*)(int, microfmt::string_view, microfmt::string_view)  noexcept) -> systemd_sink<>

◆ tizen_dlog_sink() [1/3]

◆ tizen_dlog_sink() [2/3]

microfmt::log::tizen_dlog_sink ( microfmt::string_view  ) -> tizen_dlog_sink<>

◆ tizen_dlog_sink() [3/3]

microfmt::log::tizen_dlog_sink ( microfmt::string_view  ,
void(*)(int, microfmt::string_view, microfmt::string_view)  noexcept 
) -> tizen_dlog_sink<>

◆ to_short_string()

constexpr microfmt::string_view microfmt::log::to_short_string ( level  lvl)
constexprnoexcept

◆ to_string_view()

constexpr microfmt::string_view microfmt::log::to_string_view ( level  lvl)
constexprnoexcept

◆ trace() [1/2]

template<typename StrProvider , typename... Args>
void microfmt::log::trace ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
)
inlinenoexcept

◆ trace() [2/2]

template<typename... Args>
void microfmt::log::trace ( microfmt::string_view  fmt,
const Args &...  args 
)
inlinenoexcept

◆ warn() [1/2]

template<typename StrProvider , typename... Args>
void microfmt::log::warn ( compile_string_holder< StrProvider >  fmt,
const Args &...  args 
)
inlinenoexcept

◆ warn() [2/2]

template<typename... Args>
void microfmt::log::warn ( microfmt::string_view  fmt,
const Args &...  args 
)
inlinenoexcept

Variable Documentation

◆ no_cpu

constexpr std::uint32_t microfmt::log::no_cpu = 0xFFFFFFFFU
inlineconstexpr

CPU index value meaning "unknown".

◆ wait_forever

constexpr std::uint64_t microfmt::log::wait_forever = ~std::uint64_t{0}
inlineconstexpr

timeout_us value meaning "wait without a deadline".