Log
Structured logging system with severity levels.
Header: #include <asw/modules/log.h>
Namespace: asw::log
Log Levels
enum class Level { Debug, Info, Warn, Error };Messages below the configured minimum level are ignored. The default level is Info.
Each message starts with the local time, with milliseconds (for example, [14:03:27.412]).
Functions
log_message
void log_message(Level level, const std::string& message);Log a message at a specific severity level.
set_level
void set_level(Level level);Set the minimum log level. Messages below this level are discarded.
set_output
void set_output(std::ostream& stream);Set the output stream for log messages (default: std::cerr).
debug
void debug(const std::string& message);
template <typename... Args>
void debug(std::format_string<Args...> format, Args&&... args);Log a debug-level message. The template overload supports std::format-style formatting.
info
void info(const std::string& message);
template <typename... Args>
void info(std::format_string<Args...> format, Args&&... args);Log an info-level message. The template overload supports std::format-style formatting.
warn
void warn(const std::string& message);
template <typename... Args>
void warn(std::format_string<Args...> format, Args&&... args);Log a warning-level message. The template overload supports std::format-style formatting.
error
void error(const std::string& message);
template <typename... Args>
void error(std::format_string<Args...> format, Args&&... args);Log an error-level message. The template overload supports std::format-style formatting.
progress
void progress(float progress, std::string message);
template <typename... Args>
void progress(float prog, std::format_string<Args...> format, Args&&... args);Log a progress message with a progress bar and a percentage. progress is a value from 0.0 to 1.0. The template overload supports std::format-style formatting.
Example
asw::log::set_level(asw::log::Level::Info);
asw::log::debug("This won't appear"); // below Info level
asw::log::info("Game started");
asw::log::warn("Low memory");
asw::log::error("Failed to load asset");
// Formatted logging
asw::log::info("Player {} scored {} points", player_name, score);
asw::log::debug("Position: ({}, {})", x, y);
asw::log::error("Failed to load file: {}", filename);
// Progress
asw::log::progress(0.5f, "Loading assets ({}/{})", loaded, total);
// Log to a file (needs #include <fstream>)
std::ofstream log_file("game.log");
asw::log::set_output(log_file);