8#include <unordered_map>
75 static std::string
Header(std::string_view message,
int const width = 50);
78 template <
typename... VALUES>
79 void Trace(std::string_view message,
const VALUES... vals)
const {
Print(trace, message, vals...); }
81 template <
typename... VALUES>
82 void Debug(std::string_view message,
const VALUES... vals)
const {
Print(debug, message, vals...); }
84 template <
typename... VALUES>
85 void Info(std::string_view message,
const VALUES... vals)
const {
Print(info, message, vals...); }
87 template <
typename... VALUES>
88 void Warn(std::string_view message,
const VALUES... vals)
const {
Print(warn, message, vals...); }
90 template <
typename... VALUES>
91 void Error(std::string_view message,
const VALUES... vals)
const {
Print(error, message, vals...); }
98 template <
typename... VALUES>
99 void Print(
Level const lev, std::string_view message,
const VALUES... vals)
const
102 if(
auto it{m_level_names.find(lev)}; it != m_level_names.end()) {
103 std::function<std::string(std::string)> style = [](std::string s)
104 {
return fmt::format(
"[{}]", s); };
108 style = [](std::string s)
109 {
return fmt::format(
"[{}]", fmt::styled(s, fmt::emphasis::bold | fmt::fg(fmt::terminal_color::magenta))); };
112 style = [](std::string s)
113 {
return fmt::format(
"[{}]", fmt::styled(s, fmt::emphasis::bold | fmt::fg(fmt::terminal_color::red))); };
116 style = [](std::string s)
117 {
return fmt::format(
"[{}]", fmt::styled(s, fmt::emphasis::bold)); };
121 lev >= warn ? stderr : stdout,
122 fmt::runtime(fmt::format(
"{} {} {}\n", style(it->second), style(m_name), message)),
126 Warn(
"Logger::Print called with unknown log level '{}'; printing as error instead",
static_cast<int>(lev));
127 Error(message, vals...);
141 std::unordered_map<Level, std::string> m_level_names;
void Info(std::string_view message, const VALUES... vals) const
Printout a log message at the info level.
void Error(std::string_view message, const VALUES... vals) const
Printout a log message at the error level.
void EnableStyle()
Enable styled log printouts, with color and emphasis.
Logger(std::string_view name="log", Level const lev=DEFAULT_LEVEL, bool const enable_style=true)
void Trace(std::string_view message, const VALUES... vals) const
Printout a log message at the trace level.
void Debug(std::string_view message, const VALUES... vals) const
Printout a log message at the debug level.
void Print(Level const lev, std::string_view message, const VALUES... vals) const
static std::string Header(std::string_view message, int const width=50)
void SetLevel(std::string_view lev)
void Warn(std::string_view message, const VALUES... vals) const
Printout a log message at the warn level.
void SetLevel(Level const lev)
static Level const DEFAULT_LEVEL
The default log level.
void DisableStyle()
Disable styled log printout color and emphasis.
General, top-level namespace for algorithms and infrastructure. For algorithms and bindings,...