Hermes C++ API Reference

class Logger

Collaboration diagram for Hermes::Logger:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="Logger" tooltip="Logger" fillcolor="#BFBFBF"]
    "4" [label="atomic< Level >" tooltip="atomic< Level >"]
    "3" [label="mutex" tooltip="mutex"]
    "2" [label="vector< std::shared_ptr< Hermes::Logger::Sink > >" tooltip="vector< std::shared_ptr< Hermes::Logger::Sink > >"]
    "1" -> "2" [dir=forward tooltip="usage"]
    "1" -> "3" [dir=forward tooltip="usage"]
    "1" -> "4" [dir=forward tooltip="usage"]
}

Public Types

enum class Level

Values:

enumerator Trace
enumerator Debug
enumerator Info
enumerator Warn
enumerator Error
enumerator Critical
enumerator Off

Public Functions

template<typename ...Args>
inline void log_with_location(const std::source_location &loc, Level level, std::string_view fmt, Args&&... args)

Public Static Functions

template<typename ...Args>
static inline void log(Level level, std::string_view fmt, Args&&... args)
template<typename ...Args>
static inline void log(const std::source_location &loc, Level level, std::string_view fmt, Args&&... args)
static void add_sink(std::shared_ptr<Sink> sink)
static void set_level(Level level)
static void clear_sinks_for_testing()

Private Functions

Logger() = default
void dispatch(Level level, std::string_view message, const std::source_location &loc)

Private Members

std::vector<std::shared_ptr<Sink>> sinks
std::mutex sinks_mutex
std::atomic<Level> current_level = {Level::Info}

Private Static Functions

static Logger &instance()
class Sink

Inheritance diagram for Hermes::Logger::Sink:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "2" [label="ConsoleSink" tooltip="ConsoleSink"]
    "1" [label="Logger::Sink" tooltip="Logger::Sink" fillcolor="#BFBFBF"]
    "2" -> "1" [dir=forward tooltip="public-inheritance"]
}

Collaboration diagram for Hermes::Logger::Sink:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="Logger::Sink" tooltip="Logger::Sink" fillcolor="#BFBFBF"]
}

Subclassed by ConsoleSink

Public Functions

virtual ~Sink() = default
virtual void log(Level level, std::string_view message, const std::source_location &loc) = 0
virtual void flush() = 0
class ConsoleSink : public Logger::Sink

Inheritance diagram for Hermes::ConsoleSink:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="ConsoleSink" tooltip="ConsoleSink" fillcolor="#BFBFBF"]
    "2" [label="Sink" tooltip="Sink"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

Collaboration diagram for Hermes::ConsoleSink:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="ConsoleSink" tooltip="ConsoleSink" fillcolor="#BFBFBF"]
    "2" [label="Sink" tooltip="Sink"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
}

A simple sink that writes log messages to the console.

Public Functions

virtual void log(Logger::Level level, std::string_view message, const std::source_location &loc) override

Logs a message to the console.

Parameters:
  • level – Logging level.

  • message – The message to log.

  • loc – Source location.

virtual void flush() override

Flushes the console output.