使用 XGE 内置的分级日志系统输出调试信息,控制日志级别,将引擎内部状态暴露给你的应用。
XGE 内置了一个轻量级日志系统,支持 6 个级别。引擎内部的警告和错误都通过此系统输出。你也可以在自己的代码中使用它,获得统一的日志格式。
| 常量 | 值 | 用途 |
|---|---|---|
XGE_LOG_TRACE | 0 | 最详细的跟踪信息(循环内每帧) |
XGE_LOG_DEBUG | 1 | 调试信息(开发时使用) |
XGE_LOG_INFO | 2 | 一般信息(启动、加载完成) |
XGE_LOG_WARN | 3 | 警告(可恢复的异常) |
XGE_LOG_ERROR | 4 | 错误(功能失败) |
XGE_LOG_FATAL | 5 | 致命错误(引擎无法继续) |
XGE_LOG_OFF | 6 | 关闭所有日志输出 |
| 函数 | 说明 |
|---|---|
int xgeLogSetLevel(int iLevel) | 设置最低输出级别(低于此级别的日志被过滤) |
int xgeLogGetLevel(void) | 获取当前日志级别 |
int xgeLogWrite(int iLevel, const char* sTag, const char* sMessage) | 写入一条日志 |
int xgeLogFlush(void) | 刷新日志缓冲区到输出 |
gcc -O2 -I. -o ch07.exe ch07_main.c build\xge.lib -lm -lws2_32 -liphlpapi -lgdi32 -luser32 -lshell32 -lopengl32 -lole32 -lwinmm -lavrt
.\ch07.exe
#include "xge.h"
int main(void) {
// 设置日志级别为 DEBUG(显示 DEBUG 及以上)
xgeLogSetLevel(XGE_LOG_DEBUG);
// 写入不同级别的日志
xgeLogWrite(XGE_LOG_INFO, "App", "Application starting...");
xgeLogWrite(XGE_LOG_DEBUG, "Init", "Loading textures...");
xgeLogWrite(XGE_LOG_WARN, "GL", "Texture size exceeds recommended max");
xgeLogWrite(XGE_LOG_ERROR, "File", "Failed to load: assets/hero.png");
// TRACE 级别不会输出(当前级别为 DEBUG)
xgeLogWrite(XGE_LOG_TRACE, "Loop", "Frame 1"); // 被过滤
xgeLogFlush(); // 确保全部输出
// ... 初始化引擎 ...
return 0;
}stdout(控制台)。在 Windows GUI 应用中,如果没有控制台窗口,日志不可见。Debug 版本(xgedbg.dll)可能额外输出到 OutputDebugString。
// Release 构建中只显示警告和错误
#ifdef NDEBUG
xgeLogSetLevel(XGE_LOG_WARN);
#else
xgeLogSetLevel(XGE_LOG_TRACE); // Debug 全部显示
#endifXGE_LOG_OFF 可完全静默。LOG_INFO(tag, fmt, ...) 宏,内部调用 xgeLogWrite。XGE_LOG_OFF,验证引擎内部警告也不再输出。
xgeLogWrite,并用颜色区分 INFO、DEBUG、WARN 与 ERROR;可用 --frames 1 验证非交互运行。