mirror of
https://github.com/pound-emu/pound.git
synced 2025-12-13 13:37:02 +00:00
Import Strong Logger & Config System
This commit is contained in:
parent
92d4e7a8d3
commit
014b236228
48 changed files with 3281 additions and 734 deletions
78
core/Base/Logging/Log.h
Normal file
78
core/Base/Logging/Log.h
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
// Copyright 2025 Xenon Emulator Project. All rights reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <algorithm>
|
||||
#include <fmt/format.h>
|
||||
|
||||
#include "Base/Config.h"
|
||||
|
||||
#include "LogTypes.h"
|
||||
|
||||
namespace Base {
|
||||
namespace Log {
|
||||
|
||||
constexpr const char* TrimSourcePath(const std::string_view &source) {
|
||||
const auto rfind = [source](const std::string_view match) {
|
||||
return source.rfind(match) == source.npos ? 0 : (source.rfind(match) + match.size());
|
||||
};
|
||||
const auto idx = std::max({ rfind("/"), rfind("\\") });
|
||||
return source.data() + idx;
|
||||
}
|
||||
|
||||
/// Logs a message to the global logger, using fmt
|
||||
void FmtLogMessageImpl(Class logClass, Level logLevel, const char *filename,
|
||||
u32 lineNum, const char *function, const char *format,
|
||||
const fmt::format_args& args);
|
||||
|
||||
/// Logs a message without any formatting
|
||||
void NoFmtMessage(Class logClass, Level logLevel, const std::string &message);
|
||||
|
||||
template <typename... Args>
|
||||
void FmtLogMessage(Class logClass, Level logLevel, const char *filename, u32 lineNum,
|
||||
const char *function, const char *format, const Args&... args) {
|
||||
FmtLogMessageImpl(logClass, logLevel, filename, lineNum, function, format,
|
||||
fmt::make_format_args(args...));
|
||||
}
|
||||
|
||||
} // namespace Log
|
||||
} // namespace Base
|
||||
|
||||
// Define the fmt lib macros
|
||||
#define LOG_GENERIC(logClass, logLevel, ...) \
|
||||
Base::Log::FmtLogMessage(logClass, logLevel, Base::Log::TrimSourcePath(__FILE__), \
|
||||
__LINE__, __func__, __VA_ARGS__)
|
||||
#ifdef DEBUG_BUILD
|
||||
#define LOG_TRACE(logClass, ...) \
|
||||
if (Config::log.debugOnly) \
|
||||
Base::Log::FmtLogMessage(Base::Log::Class::logClass, Base::Log::Level::Trace, \
|
||||
Base::Log::TrimSourcePath(__FILE__), __LINE__, __func__, \
|
||||
__VA_ARGS__)
|
||||
#else
|
||||
#define LOG_TRACE(logClass, ...) ;
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_BUILD
|
||||
#define LOG_DEBUG(logClass, ...) \
|
||||
Base::Log::FmtLogMessage(Base::Log::Class::logClass, Base::Log::Level::Debug, \
|
||||
Base::Log::TrimSourcePath(__FILE__), __LINE__, __func__, \
|
||||
__VA_ARGS__)
|
||||
#else
|
||||
#define LOG_DEBUG(logClass, ...) ;
|
||||
#endif
|
||||
#define LOG_INFO(logClass, ...) \
|
||||
Base::Log::FmtLogMessage(Base::Log::Class::logClass, Base::Log::Level::Info, \
|
||||
Base::Log::TrimSourcePath(__FILE__), __LINE__, __func__, \
|
||||
__VA_ARGS__)
|
||||
#define LOG_WARNING(logClass, ...) \
|
||||
Base::Log::FmtLogMessage(Base::Log::Class::logClass, Base::Log::Level::Warning, \
|
||||
Base::Log::TrimSourcePath(__FILE__), __LINE__, __func__, \
|
||||
__VA_ARGS__)
|
||||
#define LOG_ERROR(logClass, ...) \
|
||||
Base::Log::FmtLogMessage(Base::Log::Class::logClass, Base::Log::Level::Error, \
|
||||
Base::Log::TrimSourcePath(__FILE__), __LINE__, __func__, \
|
||||
__VA_ARGS__)
|
||||
#define LOG_CRITICAL(logClass, ...) \
|
||||
Base::Log::FmtLogMessage(Base::Log::Class::logClass, Base::Log::Level::Critical, \
|
||||
Base::Log::TrimSourcePath(__FILE__), __LINE__, __func__, \
|
||||
__VA_ARGS__)
|
||||
Loading…
Add table
Add a link
Reference in a new issue