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) {
return fmt::format(
"[{}]", s); };
107 style = [](std::string s) {
return fmt::format(
"[{}]", fmt::styled(s, fmt::emphasis::bold | fmt::fg(fmt::terminal_color::magenta))); };
110 style = [](std::string s) {
return fmt::format(
"[{}]", fmt::styled(s, fmt::emphasis::bold | fmt::fg(fmt::terminal_color::red))); };
113 style = [](std::string s) {
return fmt::format(
"[{}]", fmt::styled(s, fmt::emphasis::bold)); };
117 lev >= warn ? stderr : stdout,
118 fmt::runtime(fmt::format(
"{} {} {}\n", style(it->second), style(m_name), message)),
122 Warn(
"Logger::Print called with unknown log level '{}'; printing as error instead",
static_cast<int>(lev));
123 Error(message, vals...);
137 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.