16#include <unordered_map>
53 default:
return "Unknown";
118 return static_cast<uint8_t
>(messageVerbosity) >
static_cast<uint8_t
>(
runtimeVerbosity_.load(std::memory_order_relaxed));
169 bool loadConfig(
const std::string& configPath);
176 bool saveConfig(
const std::string& configPath)
const;
207#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity) \
208 extern ::EngineCore::LogCategory CategoryName;
219#define DEFINE_LOG_CATEGORY(CategoryName, DefaultVerbosity, CompileTimeVerbosity) \
220 ::EngineCore::LogCategory CategoryName(#CategoryName, \
221 ::EngineCore::LogVerbosity::DefaultVerbosity, \
222 ::EngineCore::LogVerbosity::CompileTimeVerbosity);
234#define DEFINE_LOG_CATEGORY_STATIC(CategoryName, DefaultVerbosity, CompileTimeVerbosity) \
235 static ::EngineCore::LogCategory CategoryName##_Instance(#CategoryName, \
236 ::EngineCore::LogVerbosity::DefaultVerbosity, \
237 ::EngineCore::LogVerbosity::CompileTimeVerbosity); \
238 static ::EngineCore::LogCategory& CategoryName = CategoryName##_Instance;
void setAllVerbosity(LogVerbosity verbosity)
Set verbosity for all categories.
LogCategoryManager & operator=(const LogCategoryManager &)=delete
~LogCategoryManager()=default
LogVerbosity defaultVerbosity_
LogCategoryManager(const LogCategoryManager &)=delete
std::unordered_map< std::string, LogCategory * > categories_
LogCategory * findCategory(const std::string &name)
Find a category by name.
std::vector< LogCategory * > getAllCategories() const
Get all registered categories (for debug UI, listing, etc.)
LogCategoryManager()=default
bool loadConfig(const std::string &configPath)
Load verbosity settings from a JSON config file.
bool setVerbosity(const std::string &categoryName, LogVerbosity verbosity)
bool saveConfig(const std::string &configPath) const
Save current verbosity settings to a JSON config file.
static LogCategoryManager & get()
Get the singleton instance.
void registerCategory(LogCategory *category)
Register a category (called automatically by DEFINE_LOG_CATEGORY)
Represents a single log category with verbosity control.
constexpr LogVerbosity getCompileTimeVerbosity() const
Get compile-time verbosity (for constexpr checks)
std::atomic< LogVerbosity > runtimeVerbosity_
void setVerbosity(LogVerbosity verbosity)
Set runtime verbosity.
const char * getName() const
Get the category name.
LogCategory(const char *name, LogVerbosity defaultVerbosity, LogVerbosity compileTimeVerbosity)
Construct a log category.
LogVerbosity getVerbosity() const
Get current runtime verbosity.
bool isSuppressed(LogVerbosity messageVerbosity) const
Check if a message at the given verbosity should be logged.
const LogVerbosity compileTimeVerbosity_
Log category system implementation.
LogVerbosity verbosityFromString(const std::string &str)
Parse verbosity from string (case-insensitive)
LogVerbosity
Log verbosity levels, ordered from most to least severe.
@ Warning
Potential issue.
@ Info
Important state changes.
@ Fatal
Unrecoverable error, may crash.
@ Error
Recoverable error.
@ Debug
Development debugging.
@ Verbose
Detailed tracing.
constexpr int verbosityToPlogSeverity(LogVerbosity v)
Convert LogVerbosity to plog::Severity.
constexpr const char * verbosityToString(LogVerbosity v)
Convert verbosity enum to string for display/config.