8#include <unordered_map>
79 static std::string
Header(std::string_view message,
int const width = 50);
82 template <
typename... VALUES>
83 void Trace(std::string_view message,
const VALUES... vals)
const {
Print(trace, message, vals...); }
85 template <
typename... VALUES>
86 void Debug(std::string_view message,
const VALUES... vals)
const {
Print(debug, message, vals...); }
88 template <
typename... VALUES>
89 void Info(std::string_view message,
const VALUES... vals)
const {
Print(info, message, vals...); }
91 template <
typename... VALUES>
92 void Warn(std::string_view message,
const VALUES... vals)
const {
Print(warn, message, vals...); }
94 template <
typename... VALUES>
95 void Error(std::string_view message,
const VALUES... vals)
const {
Print(error, message, vals...); }
102 template <
typename... VALUES>
103 void Print(
Level const lev, std::string_view message,
const VALUES... vals)
const
106 if(
auto it{m_level_names.find(lev)}; it != m_level_names.end()) {
107 std::function<std::string(std::string)> style = [](std::string s) {
return fmt::format(
"[{}]", s); };
111 style = [](std::string s) {
return fmt::format(
"[{}]", fmt::styled(s, fmt::emphasis::bold | fmt::fg(fmt::terminal_color::magenta))); };
114 style = [](std::string s) {
return fmt::format(
"[{}]", fmt::styled(s, fmt::emphasis::bold | fmt::fg(fmt::terminal_color::red))); };
117 style = [](std::string s) {
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.
std::string GetLevelName()