docs: update core and debug API docs
This commit is contained in:
@@ -1,27 +1,43 @@
|
||||
# Logger::AddSink
|
||||
|
||||
```cpp
|
||||
void AddSink(std::unique_ptr<ILogSink> sink)
|
||||
void AddSink(std::unique_ptr<ILogSink> sink);
|
||||
```
|
||||
|
||||
向日志系统添加一个输出目标(Sink)。Logger 持有 Sink 的所有权,传入的 `unique_ptr` 被移动到内部容器中。每次日志记录时,所有已注册的 Sink 的 `Log` 方法都会被调用。
|
||||
添加一个日志输出槽(Sink)到 Logger。Sink 负责将日志输出到具体目标(如控制台、文件、网络等)。
|
||||
|
||||
**参数:**
|
||||
- `sink` - 要添加的日志输出目标,使用 `std::unique_ptr` 包装
|
||||
- `sink` - 指向 ILogSink 接口的唯一指针
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**线程安全:** ✅
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
#include "XCEngine/Debug/ConsoleLogSink.h"
|
||||
#include "XCEngine/Debug/FileLogSink.h"
|
||||
|
||||
XCEngine::Debug::Logger::Get().Initialize();
|
||||
XCEngine::Debug::Logger::Get().AddSink(std::make_unique<XCEngine::Debug::ConsoleLogSink>());
|
||||
XCEngine::Debug::Logger::Get().AddSink(std::make_unique<XCEngine::Debug::FileLogSink>("app.log"));
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
logger.Initialize();
|
||||
|
||||
// 添加控制台输出
|
||||
logger.AddSink(std::make_unique<ConsoleLogSink>());
|
||||
|
||||
// 添加文件输出
|
||||
logger.AddSink(std::make_unique<FileLogSink>("app.log"));
|
||||
|
||||
logger.Info(LogCategory::General, "Sinks added");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [ILogSink](../ilogsink/ilogsink.md) - 日志输出接口
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [RemoveSink](removesink.md) - 移除日志输出槽
|
||||
- [ILogSink](../ilogsink/ilogsink.md) - 日志输出槽接口
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Logger::Debug
|
||||
|
||||
```cpp
|
||||
void Debug(LogCategory category, const Containers::String& message)
|
||||
void Debug(LogCategory category, const Containers::String& message);
|
||||
```
|
||||
|
||||
记录一条 Debug(1 级)日志。Debug 级别用于一般调试信息,比 Verbose 简洁但比 Info 详细。
|
||||
记录 Debug 级别日志。用于记录调试目的的信息,比 Verbose 级别稍简略。
|
||||
|
||||
**参数:**
|
||||
- `category` - 日志分类
|
||||
@@ -12,19 +12,21 @@ void Debug(LogCategory category, const Containers::String& message)
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**复杂度:** O(n),n 为注册的 Sink 数量
|
||||
**线程安全:** ✅
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
XCEngine::Debug::Logger::Get().Debug(
|
||||
XCEngine::Debug::LogCategory::Rendering,
|
||||
"Draw call batch size: 512"
|
||||
);
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
logger.Debug(LogCategory::Rendering, "Frame rendered in 16ms");
|
||||
logger.Debug(LogCategory::Physics, "Collision detected");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [LogLevel](../loglevel/loglevel.md) - 日志级别说明
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Logger::Error
|
||||
|
||||
```cpp
|
||||
void Error(LogCategory category, const Containers::String& message)
|
||||
void Error(LogCategory category, const Containers::String& message);
|
||||
```
|
||||
|
||||
记录一条 Error(4 级)日志。Error 级别用于表示程序执行中发生的错误,如文件读取失败、网络连接中断等。程序通常可以继续运行但功能可能受限。
|
||||
记录 Error 级别日志。用于记录错误信息,表示发生了错误但程序可以继续运行。
|
||||
|
||||
**参数:**
|
||||
- `category` - 日志分类
|
||||
@@ -12,19 +12,21 @@ void Error(LogCategory category, const Containers::String& message)
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**复杂度:** O(n),n 为注册的 Sink 数量
|
||||
**线程安全:** ✅
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
XCEngine::Debug::Logger::Get().Error(
|
||||
XCEngine::Debug::LogCategory::Network,
|
||||
"Failed to connect to game server"
|
||||
);
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
logger.Error(LogCategory::Network, "Failed to connect to server");
|
||||
logger.Error(LogCategory::FileSystem, "Cannot open file");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [LogLevel](../loglevel/loglevel.md) - 日志级别说明
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Logger::Fatal
|
||||
|
||||
```cpp
|
||||
void Fatal(LogCategory category, const Containers::String& message)
|
||||
void Fatal(LogCategory category, const Containers::String& message);
|
||||
```
|
||||
|
||||
记录一条 Fatal(5 级)日志。Fatal 级别用于表示不可恢复的严重错误,通常意味着程序即将终止。此方法可能在记录日志后触发程序中断。
|
||||
记录 Fatal 级别日志。用于记录致命错误,表示程序无法继续运行。通常用于 `XE_ASSERT` 宏中。
|
||||
|
||||
**参数:**
|
||||
- `category` - 日志分类
|
||||
@@ -12,19 +12,20 @@ void Fatal(LogCategory category, const Containers::String& message)
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**复杂度:** O(n),n 为注册的 Sink 数量
|
||||
**线程安全:** ✅
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
XCEngine::Debug::Logger::Get().Fatal(
|
||||
XCEngine::Debug::LogCategory::General,
|
||||
"Out of memory - cannot continue"
|
||||
);
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
logger.Fatal(LogCategory::General, "Critical system failure");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [LogLevel](../loglevel/loglevel.md) - 日志级别说明
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
# Logger::Get
|
||||
|
||||
```cpp
|
||||
static Logger& Get()
|
||||
static Logger& Get();
|
||||
```
|
||||
|
||||
获取 `Logger` 单例实例。Logger 使用局部静态变量实现 Meyers' Singleton,确保线程安全且只初始化一次。
|
||||
获取 Logger 单例实例。
|
||||
|
||||
**返回:** `Logger&` - 全局日志记录器实例的引用
|
||||
|
||||
**复杂度:** O(1)
|
||||
**线程安全:** ✅
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
XCEngine::Debug::Logger& logger = XCEngine::Debug::Logger::Get();
|
||||
logger.Initialize();
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
logger.Info(LogCategory::General, "Logger initialized");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Logger::Info
|
||||
|
||||
```cpp
|
||||
void Info(LogCategory category, const Containers::String& message)
|
||||
void Info(LogCategory category, const Containers::String& message);
|
||||
```
|
||||
|
||||
记录一条 Info(2 级)日志。Info 级别用于一般性信息,如启动提示、配置加载等用户可见的正常运行消息。
|
||||
记录 Info 级别日志。用于记录一般信息性消息,表示程序正常运行状态。
|
||||
|
||||
**参数:**
|
||||
- `category` - 日志分类
|
||||
@@ -12,19 +12,21 @@ void Info(LogCategory category, const Containers::String& message)
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**复杂度:** O(n),n 为注册的 Sink 数量
|
||||
**线程安全:** ✅
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
XCEngine::Debug::Logger::Get().Info(
|
||||
XCEngine::Debug::LogCategory::General,
|
||||
"Application initialized successfully"
|
||||
);
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
logger.Info(LogCategory::General, "Application started");
|
||||
logger.Info(LogCategory::Network, "Connected to server");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [LogLevel](../loglevel/loglevel.md) - 日志级别说明
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
# Logger::Initialize
|
||||
|
||||
```cpp
|
||||
void Initialize()
|
||||
void Initialize();
|
||||
```
|
||||
|
||||
初始化日志系统。在首次使用日志功能前必须调用。初始化内部状态标志,确保日志系统已准备好工作。
|
||||
初始化日志系统。在首次使用 Logger 前必须调用此方法进行初始化。初始化过程会设置内部状态并准备日志记录环境。
|
||||
|
||||
**注意:** 默认最小日志级别为 `Verbose`,所有日志分类默认启用,这些是类成员变量的默认值,不需要在此方法中设置。
|
||||
**线程安全:** ❌(应在单线程启动阶段调用)
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
int main() {
|
||||
XCEngine::Debug::Logger::Get().Initialize();
|
||||
XCEngine::Debug::Logger::Get().AddSink(std::make_unique<XCEngine::Debug::ConsoleLogSink>());
|
||||
XCEngine::Debug::Logger::Get().Info(XCEngine::Debug::LogCategory::General, "Application started");
|
||||
return 0;
|
||||
}
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
logger.Initialize();
|
||||
logger.Info(LogCategory::General, "System initialized");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [Shutdown](shutdown.md) - 关闭日志系统
|
||||
|
||||
@@ -3,43 +3,40 @@
|
||||
```cpp
|
||||
void Log(LogLevel level, LogCategory category,
|
||||
const Containers::String& message, const char* file = nullptr,
|
||||
int32_t line = 0, const char* function = nullptr)
|
||||
int32_t line = 0, const char* function = nullptr);
|
||||
```
|
||||
|
||||
通用日志记录方法。根据设置的最小日志级别和分类开关决定是否输出,然后将日志分发给所有已注册的 Sink。如果日志级别低于最小级别或分类被禁用,则不输出。
|
||||
通用日志记录方法,支持完整的日志信息包括源码位置。
|
||||
|
||||
**参数:**
|
||||
- `level` - 日志级别(Verbose, Debug, Info, Warning, Error, Fatal)
|
||||
- `category` - 日志分类(General, Rendering, Physics 等)
|
||||
- `level` - 日志级别(Verbose、Debug、Info、Warning、Error、Fatal)
|
||||
- `category` - 日志分类(General、Rendering、Physics 等)
|
||||
- `message` - 日志消息内容
|
||||
- `file` - 源代码文件路径(可选,默认 nullptr)
|
||||
- `line` - 源代码行号(可选,默认 0)
|
||||
- `function` - 函数名称(可选,默认 nullptr)
|
||||
- `file` - 源码文件名(可选)
|
||||
- `line` - 源码行号(可选)
|
||||
- `function` - 函数名(可选)
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**复杂度:** O(n),n 为注册的 Sink 数量
|
||||
**线程安全:** ✅
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
XCEngine::Debug::Logger::Get().Log(
|
||||
XCEngine::Debug::LogLevel::Error,
|
||||
XCEngine::Debug::LogCategory::FileSystem,
|
||||
"Failed to open config file",
|
||||
__FILE__,
|
||||
__LINE__,
|
||||
__FUNCTION__
|
||||
);
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
// 推荐使用 XE_LOG 宏自动填充位置信息
|
||||
XE_LOG(XCEngine::Debug::LogCategory::General, XCEngine::Debug::LogLevel::Info, "Initialized");
|
||||
Logger& logger = Logger::Get();
|
||||
|
||||
// 完整调用(包含源码位置)
|
||||
logger.Log(LogLevel::Error, LogCategory::Network,
|
||||
"Connection timeout", __FILE__, __LINE__, __FUNCTION__);
|
||||
|
||||
// 简化调用
|
||||
logger.Log(LogLevel::Info, LogCategory::General, "Simple message");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [LogLevel](../loglevel/loglevel.md) - 日志级别枚举
|
||||
- [LogCategory](../logcategory/logcategory.md) - 日志分类枚举
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
|
||||
@@ -6,87 +6,67 @@
|
||||
|
||||
**头文件**: `XCEngine/Debug/Logger.h`
|
||||
|
||||
**描述**: 全局日志记录器单例,提供多级别、多分类的日志输出。
|
||||
**描述**: 日志系统,提供分级日志记录功能
|
||||
|
||||
## 概述
|
||||
|
||||
`Logger` 是 XCEngine 的核心日志系统单例。它支持多个日志输出目标(Sink)、日志级别过滤、分类开关,并提供宏方便使用。
|
||||
Logger 是 XCEngine 的核心日志系统,采用单例模式设计。它提供多级别(Verbose、Debug、Info、Warning、Error、Fatal)和多分类(General、Rendering、Physics 等)的日志记录功能,支持自定义日志输出槽(Sink)。
|
||||
|
||||
## 单例访问
|
||||
|
||||
| 方法 | 描述 |
|
||||
|------|------|
|
||||
| `static Logger& Get()` | 获取单例实例 |
|
||||
Logger 支持多个 Sink 组件,每个 Sink 可以将日志输出到不同的目的地(如文件、控制台、远程服务器等)。系统还提供宏定义 `XE_LOG` 和 `XE_ASSERT` 方便快速记录日志。
|
||||
|
||||
## 公共方法
|
||||
|
||||
| 方法 | 描述 |
|
||||
|------|------|
|
||||
| `void Initialize()` | [初始化日志系统](initialize.md) |
|
||||
| `void Shutdown()` | [关闭日志系统](shutdown.md) |
|
||||
| `void AddSink(std::unique_ptr<ILogSink> sink)` | [添加日志输出目标](addsink.md) |
|
||||
| `void RemoveSink(ILogSink* sink)` | [移除日志输出目标](removesink.md) |
|
||||
| `void Log(...)` | [通用日志记录](log.md) |
|
||||
| `void Verbose(...)` | [Verbose 级别日志](verbose.md) |
|
||||
| `void Debug(...)` | [Debug 级别日志](debug.md) |
|
||||
| `void Info(...)` | [Info 级别日志](info.md) |
|
||||
| `void Warning(...)` | [Warning 级别日志](warning.md) |
|
||||
| `void Error(...)` | [Error 级别日志](error.md) |
|
||||
| `void Fatal(...)` | [Fatal 级别日志](fatal.md) |
|
||||
| `void SetMinimumLevel(...)` | [设置最小日志级别](setminimumlevel.md) |
|
||||
| `void SetCategoryEnabled(...)` | [开启/关闭指定分类](setcategoryenabled.md) |
|
||||
|
||||
## 宏定义
|
||||
|
||||
### XE_LOG
|
||||
|
||||
```cpp
|
||||
#define XE_LOG(category, level, message) \
|
||||
XCEngine::Debug::Logger::Get().Log(level, category, message, __FILE__, __LINE__, __FUNCTION__)
|
||||
```
|
||||
|
||||
通用日志宏,自动填充文件名、行号和函数名。
|
||||
|
||||
### XE_ASSERT
|
||||
|
||||
```cpp
|
||||
#define XE_ASSERT(condition, message) \
|
||||
if (!(condition)) { \
|
||||
XCEngine::Debug::Logger::Get().Fatal(XCEngine::Debug::LogCategory::General, message); \
|
||||
}
|
||||
```
|
||||
|
||||
断言宏,条件失败时记录 Fatal 日志。
|
||||
| [`Get`](get.md) | 获取 Logger 单例实例 |
|
||||
| [`Initialize`](initialize.md) | 初始化日志系统 |
|
||||
| [`Shutdown`](shutdown.md) | 关闭日志系统 |
|
||||
| [`AddSink`](addsink.md) | 添加日志输出槽 |
|
||||
| [`RemoveSink`](removesink.md) | 移除日志输出槽 |
|
||||
| [`Log`](log.md) | 通用日志记录方法 |
|
||||
| [`Verbose`](verbose.md) | 记录 Verbose 级别日志 |
|
||||
| [`Debug`](debug.md) | 记录 Debug 级别日志 |
|
||||
| [`Info`](info.md) | 记录 Info 级别日志 |
|
||||
| [`Warning`](warning.md) | 记录 Warning 级别日志 |
|
||||
| [`Error`](error.md) | 记录 Error 级别日志 |
|
||||
| [`Fatal`](fatal.md) | 记录 Fatal 级别日志 |
|
||||
| [`SetMinimumLevel`](setminimumlevel.md) | 设置最低日志级别 |
|
||||
| [`SetCategoryEnabled`](setcategoryenabled.md) | 设置分类日志开关 |
|
||||
|
||||
## 使用示例
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
#include "XCEngine/Debug/ConsoleSink.h"
|
||||
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
// 获取单例
|
||||
Logger& logger = Logger::Get();
|
||||
|
||||
// 初始化
|
||||
Logger::Get().Initialize();
|
||||
Logger::Get().AddSink(std::make_unique<ConsoleLogSink>());
|
||||
Logger::Get().AddSink(std::make_unique<FileLogSink>("app.log"));
|
||||
logger.Initialize();
|
||||
|
||||
// 设置日志级别
|
||||
Logger::Get().SetMinimumLevel(LogLevel::Debug);
|
||||
// 添加控制台输出Sink
|
||||
logger.AddSink(std::make_unique<ConsoleSink>());
|
||||
|
||||
// 使用便捷方法
|
||||
Logger::Get().Info(LogCategory::Rendering, "Render started");
|
||||
Logger::Get().Warning(LogCategory::Memory, "High memory usage");
|
||||
Logger::Get().Error(LogCategory::FileSystem, "Failed to load file");
|
||||
// 使用便捷方法记录日志
|
||||
logger.Info(LogCategory::General, "Application started");
|
||||
logger.Warning(LogCategory::Rendering, "Low memory warning");
|
||||
logger.Error(LogCategory::Network, "Connection failed");
|
||||
|
||||
// 使用宏(自动带位置信息)
|
||||
XE_LOG(LogCategory::General, LogLevel::Info, "Application initialized");
|
||||
// 使用宏记录日志(自动包含文件、行号、函数信息)
|
||||
XE_LOG(LogCategory::General, LogLevel::Info, "User logged in");
|
||||
|
||||
// 使用断言
|
||||
XE_ASSERT(ptr != nullptr, "Pointer must not be null");
|
||||
// 设置最低日志级别
|
||||
logger.SetMinimumLevel(LogLevel::Warning); // 只记录 Warning 及以上
|
||||
|
||||
// 关闭
|
||||
logger.Shutdown();
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Debug 模块总览](../debug.md) - 返回模块总览
|
||||
- [ILogSink](../ilogsink/ilogsink.md) - 日志输出接口
|
||||
- [ConsoleLogSink](../consolelogsink/consolelogsink.md) - 控制台输出
|
||||
- [FileLogSink](../filelogsink/filelogsink.md) - 文件输出
|
||||
- [LogLevel](../loglevel/loglevel.md) - 日志级别枚举
|
||||
- [LogCategory](../logcategory/logcategory.md) - 日志分类枚举
|
||||
- [ILogSink](../ilogsink/ilogsink.md) - 日志输出槽接口
|
||||
|
||||
@@ -1,29 +1,37 @@
|
||||
# Logger::RemoveSink
|
||||
|
||||
```cpp
|
||||
void RemoveSink(ILogSink* sink)
|
||||
void RemoveSink(ILogSink* sink);
|
||||
```
|
||||
|
||||
从日志系统移除指定的输出目标。通过指针查找并移除对应的 Sink,Logger 不再向该目标发送日志。
|
||||
从 Logger 移除指定的日志输出槽。
|
||||
|
||||
**参数:**
|
||||
- `sink` - 要移除的日志输出目标指针
|
||||
- `sink` - 指向要移除的 ILogSink 接口的指针
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**线程安全:** ✅
|
||||
|
||||
**复杂度:** O(n),n 为注册的 Sink 数量
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
#include "XCEngine/Debug/ConsoleLogSink.h"
|
||||
|
||||
auto fileSink = std::make_unique<XCEngine::Debug::FileLogSink>("app.log");
|
||||
XCEngine::Debug::FileLogSink* rawPtr = fileSink.get();
|
||||
XCEngine::Debug::Logger::Get().AddSink(std::move(fileSink));
|
||||
// 稍后移除
|
||||
XCEngine::Debug::Logger::Get().RemoveSink(rawPtr);
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
auto consoleSink = std::make_unique<ConsoleLogSink>();
|
||||
logger.AddSink(consoleSink);
|
||||
|
||||
// 移除 Sink(传入原始指针)
|
||||
logger.RemoveSink(consoleSink.get());
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [ILogSink](../ilogsink/ilogsink.md) - 日志输出接口
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [AddSink](addsink.md) - 添加日志输出槽
|
||||
|
||||
@@ -1,36 +1,38 @@
|
||||
# Logger::SetCategoryEnabled
|
||||
|
||||
```cpp
|
||||
void SetCategoryEnabled(LogCategory category, bool enabled)
|
||||
void SetCategoryEnabled(LogCategory category, bool enabled);
|
||||
```
|
||||
|
||||
启用或禁用指定分类的日志输出。当分类被禁用时,该分类的所有日志都不会分发给 Sink,但级别过滤仍然适用。
|
||||
设置指定日志分类的开关状态。禁用的分类将不会输出任何日志。
|
||||
|
||||
**参数:**
|
||||
- `category` - 要设置的日志分类
|
||||
- `enabled` - true 表示启用,false 表示禁用
|
||||
- `category` - 日志分类
|
||||
- `enabled` - true 启用,false 禁用
|
||||
|
||||
**复杂度:** O(1)
|
||||
**返回:** 无
|
||||
|
||||
**线程安全:** ✅
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
// 禁用网络模块日志(减少日志噪音)
|
||||
XCEngine::Debug::Logger::Get().SetCategoryEnabled(
|
||||
XCEngine::Debug::LogCategory::Network,
|
||||
false
|
||||
);
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
// 稍后重新启用
|
||||
XCEngine::Debug::Logger::Get().SetCategoryEnabled(
|
||||
XCEngine::Debug::LogCategory::Network,
|
||||
true
|
||||
);
|
||||
Logger& logger = Logger::Get();
|
||||
|
||||
// 禁用物理系统日志
|
||||
logger.SetCategoryEnabled(LogCategory::Physics, false);
|
||||
|
||||
// 只启用关键分类
|
||||
logger.SetCategoryEnabled(LogCategory::General, true);
|
||||
logger.SetCategoryEnabled(LogCategory::Error, true);
|
||||
logger.SetCategoryEnabled(LogCategory::Warning, true);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [LogCategory](../logcategory/logcategory.md) - 日志分类枚举
|
||||
|
||||
@@ -1,30 +1,37 @@
|
||||
# Logger::SetMinimumLevel
|
||||
|
||||
```cpp
|
||||
void SetMinimumLevel(LogLevel level)
|
||||
void SetMinimumLevel(LogLevel level);
|
||||
```
|
||||
|
||||
设置日志系统的最小输出级别。所有低于该级别的日志将被过滤,不会分发给任何 Sink。
|
||||
设置最低日志级别。只会记录等于或高于此级别的日志,低于该级别的日志将被忽略。
|
||||
|
||||
**参数:**
|
||||
- `level` - 最小日志级别
|
||||
- `level` - 最低日志级别
|
||||
|
||||
**复杂度:** O(1)
|
||||
**返回:** 无
|
||||
|
||||
**线程安全:** ✅
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
// 只输出 Warning 及以上级别的日志
|
||||
XCEngine::Debug::Logger::Get().SetMinimumLevel(XCEngine::Debug::LogLevel::Warning);
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
// Verbose 和 Debug 级别的日志将被过滤
|
||||
XCEngine::Debug::Logger::Get().Verbose(XCEngine::Debug::LogCategory::General, "This will not be logged");
|
||||
XCEngine::Debug::Logger::Get().Warning(XCEngine::Debug::LogCategory::General, "This will be logged");
|
||||
Logger& logger = Logger::Get();
|
||||
|
||||
// 只记录 Warning 及以上级别
|
||||
logger.SetMinimumLevel(LogLevel::Warning);
|
||||
|
||||
logger.Verbose(LogCategory::General, "This won't be logged");
|
||||
logger.Debug(LogCategory::General, "This won't be logged");
|
||||
logger.Info(LogCategory::General, "This won't be logged");
|
||||
logger.Warning(LogCategory::General, "This WILL be logged");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [LogLevel](../loglevel/loglevel.md) - 日志级别枚举
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
# Logger::Shutdown
|
||||
|
||||
```cpp
|
||||
void Shutdown()
|
||||
void Shutdown();
|
||||
```
|
||||
|
||||
关闭日志系统。移除所有注册的 Sink,刷新缓冲区并重置内部状态。在程序退出前调用,确保所有日志数据已写入输出目标。
|
||||
关闭日志系统并清理资源。调用此方法后会停止所有日志记录操作并释放相关资源。在程序退出前应调用此方法。
|
||||
|
||||
**线程安全:** ❌(应在单线程退出阶段调用)
|
||||
|
||||
**复杂度:** O(n),n 为注册的 Sink 数量
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
int main() {
|
||||
XCEngine::Debug::Logger::Get().Initialize();
|
||||
// ... 应用逻辑 ...
|
||||
XCEngine::Debug::Logger::Get().Shutdown();
|
||||
return 0;
|
||||
}
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
logger.Info(LogCategory::General, "Shutting down...");
|
||||
logger.Shutdown();
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [Initialize](initialize.md) - 初始化日志系统
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Logger::Verbose
|
||||
|
||||
```cpp
|
||||
void Verbose(LogCategory category, const Containers::String& message)
|
||||
void Verbose(LogCategory category, const Containers::String& message);
|
||||
```
|
||||
|
||||
记录一条 Verbose(0 级)日志。Verbose 是最详细的日志级别,用于输出大量调试细节。
|
||||
记录 Verbose 级别日志。Verbose 是最详细的日志级别,用于记录调试信息。
|
||||
|
||||
**参数:**
|
||||
- `category` - 日志分类
|
||||
@@ -12,19 +12,21 @@ void Verbose(LogCategory category, const Containers::String& message)
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**复杂度:** O(n),n 为注册的 Sink 数量
|
||||
**线程安全:** ✅
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
XCEngine::Debug::Logger::Get().Verbose(
|
||||
XCEngine::Debug::LogCategory::Memory,
|
||||
"Memory pool fragmentation: 12.5%"
|
||||
);
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
logger.Verbose(LogCategory::General, "Variable value: 42");
|
||||
logger.Verbose(LogCategory::Memory, "Memory allocation detail");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [LogLevel](../loglevel/loglevel.md) - 日志级别说明
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Logger::Warning
|
||||
|
||||
```cpp
|
||||
void Warning(LogCategory category, const Containers::String& message)
|
||||
void Warning(LogCategory category, const Containers::String& message);
|
||||
```
|
||||
|
||||
记录一条 Warning(3 级)日志。Warning 级别用于指示潜在问题但程序仍可继续运行的情况,如资源即将耗尽、配置值超出建议范围等。
|
||||
记录 Warning 级别日志。用于记录警告信息,表示可能存在问题但程序仍能继续运行。
|
||||
|
||||
**参数:**
|
||||
- `category` - 日志分类
|
||||
@@ -12,19 +12,21 @@ void Warning(LogCategory category, const Containers::String& message)
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**复杂度:** O(n),n 为注册的 Sink 数量
|
||||
**线程安全:** ✅
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Debug/Logger.h>
|
||||
#include "XCEngine/Debug/Logger.h"
|
||||
|
||||
XCEngine::Debug::Logger::Get().Warning(
|
||||
XCEngine::Debug::LogCategory::Memory,
|
||||
"Memory usage exceeds 80% of available heap"
|
||||
);
|
||||
using namespace XCEngine::Debug;
|
||||
|
||||
Logger& logger = Logger::Get();
|
||||
logger.Warning(LogCategory::Memory, "High memory usage detected");
|
||||
logger.Warning(LogCategory::Rendering, "Low GPU memory");
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Logger 总览](logger.md) - 返回类总览
|
||||
- [Logger](logger.md) - 返回类总览
|
||||
- [LogLevel](../loglevel/loglevel.md) - 日志级别说明
|
||||
|
||||
Reference in New Issue
Block a user