Skip to main content

ClikaRT::logging::Logger

class

Header: ClikaRT/logging/logging.h

ClikaRT's logger: a configurable logging channel that is always present and always able to emit at any level (debug included), separate from whatever logging the host application uses. Verbosity is set at runtime; the default is Debug in debug builds and Info in release, overridable via the CLIKA_RT_LOG_VERBOSITY environment variable (see ClikaRT/common/env_vars.h).

Create your own named channels with get_logger("my-name"); the default channel is logger() (named "ClikaRT").

Macros

#define CLIKART_LOG_FORMAT_

#define CLIKART_LOG_FORMAT_(...) ::ClikaRT::logging::detail::log_format(__VA_ARGS__)

Declared in ClikaRT/logging/logging.h, line 185

#define CLIKART_LOG_AT

#define CLIKART_LOG_AT(level_, method_, ...) do { \ const ::ClikaRT::logging::Logger clikart_lg_ = ::ClikaRT::logging::logger(); \ if (clikart_lg_.should_log(level_)) \ clikart_lg_.method_(CLIKART_LOG_FORMAT_(__VA_ARGS__)); \ } while (0)

Declared in ClikaRT/logging/logging.h, line 188

#define CLIKART_LOG_TRACE

#define CLIKART_LOG_TRACE(...) CLIKART_LOG_AT(::ClikaRT::logging::LogLevel::Trace, trace, __VA_ARGS__)

Declared in ClikaRT/logging/logging.h, line 195

#define CLIKART_LOG_DEBUG

#define CLIKART_LOG_DEBUG(...) CLIKART_LOG_AT(::ClikaRT::logging::LogLevel::Debug, debug, __VA_ARGS__)

Declared in ClikaRT/logging/logging.h, line 196

#define CLIKART_LOG_INFO

#define CLIKART_LOG_INFO(...) CLIKART_LOG_AT(::ClikaRT::logging::LogLevel::Info, info, __VA_ARGS__)

Declared in ClikaRT/logging/logging.h, line 197

#define CLIKART_LOG_WARN

#define CLIKART_LOG_WARN(...) CLIKART_LOG_AT(::ClikaRT::logging::LogLevel::Warn, warn, __VA_ARGS__)

Declared in ClikaRT/logging/logging.h, line 198

#define CLIKART_LOG_ERROR

#define CLIKART_LOG_ERROR(...) CLIKART_LOG_AT(::ClikaRT::logging::LogLevel::Error, error, __VA_ARGS__)

Declared in ClikaRT/logging/logging.h, line 199

A handle to a logging channel. Copyable and cheap (shares the channel). All methods take an already-formatted message; use the CLIKART_LOG_* macros (or std::format) to build it; should_log lets a caller skip formatting work when the level is disabled.

Member functions

log()

void log(LogLevel level, std::string_view message) const

Emit message at level (dropped below the channel threshold).

Declared in ClikaRT/logging/logging.h, line 63

trace()

void trace(std::string_view message) const

Emit at Trace.

Declared in ClikaRT/logging/logging.h, line 65

debug()

void debug(std::string_view message) const

Emit at Debug.

Declared in ClikaRT/logging/logging.h, line 67

info()

void info(std::string_view message) const

Emit at Info.

Declared in ClikaRT/logging/logging.h, line 69

warn()

void warn(std::string_view message) const

Emit at Warn.

Declared in ClikaRT/logging/logging.h, line 71

error()

void error(std::string_view message) const

Emit at Error.

Declared in ClikaRT/logging/logging.h, line 73

set_level()

void set_level(LogLevel level) const

Set / read this channel's minimum level at runtime.

Declared in ClikaRT/logging/logging.h, line 76

level()

LogLevel level() const

the current threshold

Declared in ClikaRT/logging/logging.h, line 77

should_log()

bool should_log(LogLevel level) const

True if a message at level would be emitted (cheap pre-check).

Declared in ClikaRT/logging/logging.h, line 79

name()

std::string name() const

this channel's name

Declared in ClikaRT/logging/logging.h, line 81

add_file_handler()

void add_file_handler(std::string_view path) const

Also write this channel's records to path (appended to existing handlers).

Declared in ClikaRT/logging/logging.h, line 87

add_callback_handler()

void add_callback_handler(std::function<void(LogLevel, std::string_view)> callback) const

Also deliver each formatted record to callback(level, line) (the line has no trailing newline). The callback must be cheap and must not log back to this channel. A throw from it is contained in your own runtime and swallowed; the sink fires under the sink lock, from whichever thread logged, and must never unwind into the library.

Declared in ClikaRT/logging/logging.h, line 94