7#include "libxr_color.hpp"
9#include "libxr_time.hpp"
61 static void Publish(
LogLevel level,
const char* file, uint32_t line,
const char* fmt,
85 using namespace LibXR;
127 static inline std::atomic<uint32_t> initialized_ =
false;
132#if LIBXR_LOG_LEVEL >= 4
136#define XR_LOG_DEBUG(fmt, ...) \
137 LibXR::Logger::Publish(LibXR::LogLevel::XR_LOG_LEVEL_DEBUG, __FILE__, __LINE__, fmt, \
140#define XR_LOG_DEBUG(...)
143#if LIBXR_LOG_LEVEL >= 3
147#define XR_LOG_INFO(fmt, ...) \
148 LibXR::Logger::Publish(LibXR::LogLevel::XR_LOG_LEVEL_INFO, __FILE__, __LINE__, fmt, \
151#define XR_LOG_INFO(...)
154#if LIBXR_LOG_LEVEL >= 2
158#define XR_LOG_PASS(fmt, ...) \
159 LibXR::Logger::Publish(LibXR::LogLevel::XR_LOG_LEVEL_PASS, __FILE__, __LINE__, fmt, \
162#define XR_LOG_PASS(...)
165#if LIBXR_LOG_LEVEL >= 1
169#define XR_LOG_WARN(fmt, ...) \
170 LibXR::Logger::Publish(LibXR::LogLevel::XR_LOG_LEVEL_WARN, __FILE__, __LINE__, fmt, \
173#define XR_LOG_WARN(...)
176#if LIBXR_LOG_LEVEL >= 0
180#define XR_LOG_ERROR(fmt, ...) \
181 LibXR::Logger::Publish(LibXR::LogLevel::XR_LOG_LEVEL_ERROR, __FILE__, __LINE__, fmt, \
184#define XR_LOG_ERROR(...)
日志管理器 / LibXR Logger Manager
static const char * GetColor(LogLevel level)
根据日志级别获取显示颜色 / Get color code based on log level
static void Init()
初始化日志主题 / Initialize the log topic
static const char * LevelToString(LogLevel level)
将日志级别转换为字符串 / Convert log level to string
static void Publish(LogLevel level, const char *file, uint32_t line, const char *fmt,...)
发布一条日志 / Publish a log message
static void PrintToTerminal(const LogData &data)
打印日志到终端 / Print log to terminal
static int Printf(const char *fmt,...)
Prints a formatted string to the write port (like printf).
表示毫秒级时间戳的类。Class representing a timestamp in milliseconds.
constexpr const char * LIBXR_FONT_STR[]
ANSI escape sequences for font color / ANSI转义序列 - 字体颜色
constexpr const char * LIBXR_FORMAT_STR[]
ANSI escape sequences for text format / ANSI转义序列 - 文本格式
LogLevel
日志级别枚举 / Log level enumeration
@ XR_LOG_LEVEL_INFO
一般信息 / Informational message
@ XR_LOG_LEVEL_DEBUG
调试信息 / Debug message
@ XR_LOG_LEVEL_WARN
警告信息 / Warning message
@ XR_LOG_LEVEL_ERROR
错误信息 / Error message
@ XR_LOG_LEVEL_PASS
通过信息 / Pass message
日志数据结构体 / Log data structure
uint32_t line
行号 / Line number
const char * file
文件名指针 / Source file name pointer
LogLevel level
日志级别 / Log level
TimestampMS timestamp
时间戳 / Timestamp
char message[XR_LOG_MESSAGE_MAX_LEN]
日志消息内容 / Log message content