145 lines
3.3 KiB
Markdown
145 lines
3.3 KiB
Markdown
# LogManager 使用指南
|
||
|
||
## 文件位置
|
||
|
||
`src/Utils/LogManager.cs`
|
||
|
||
## 用途
|
||
|
||
统一的日志记录管理器。在 Navisworks 插件环境中,`Console.WriteLine` 不可见,必须使用 LogManager。
|
||
|
||
## 日志级别
|
||
|
||
```csharp
|
||
LogManager.Debug("调试信息"); // 开发调试使用
|
||
LogManager.Info("普通信息"); // 一般操作记录
|
||
LogManager.Warning("警告信息"); // 需要注意但非错误
|
||
LogManager.Error("错误信息"); // 错误(可选异常参数)
|
||
LogManager.Fatal("致命错误"); // 严重错误
|
||
```
|
||
|
||
## 核心方法
|
||
|
||
### 基本信息日志
|
||
|
||
```csharp
|
||
LogManager.Info("路径创建成功");
|
||
LogManager.Info($"路径名称: {route.Name}, 长度: {route.TotalLength}");
|
||
```
|
||
|
||
### 带异常的错误日志
|
||
|
||
```csharp
|
||
try
|
||
{
|
||
// 某些操作
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// ✅ 正确:记录异常详情
|
||
LogManager.Error($"操作失败: {ex.Message}", ex);
|
||
}
|
||
```
|
||
|
||
### 调试日志(开发时)
|
||
|
||
```csharp
|
||
LogManager.Debug($"当前路径点数: {path.Points.Count}");
|
||
LogManager.Debug($"网格大小: {grid.Width} x {grid.Height}");
|
||
```
|
||
|
||
## 使用示例
|
||
|
||
### 示例1:记录操作开始和完成
|
||
|
||
```csharp
|
||
public void CreatePath()
|
||
{
|
||
LogManager.Info("=== 开始创建路径 ===");
|
||
|
||
try
|
||
{
|
||
// 执行操作
|
||
var route = GeneratePath();
|
||
|
||
LogManager.Info($"路径创建成功: {route.Name}, ID: {route.Id}");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogManager.Error($"路径创建失败: {ex.Message}", ex);
|
||
throw; // 重新抛出或处理
|
||
}
|
||
|
||
LogManager.Info("=== 创建路径完成 ===");
|
||
}
|
||
```
|
||
|
||
### 示例2:记录重要状态变更
|
||
|
||
```csharp
|
||
public void SetStartPoint(Point3D point)
|
||
{
|
||
_startPoint = point;
|
||
|
||
LogManager.Info($"起点已设置: ({point.X:F2}, {point.Y:F2}, {point.Z:F2})");
|
||
|
||
if (_endPoint != null)
|
||
{
|
||
double distance = GeometryHelper.Distance(point, _endPoint);
|
||
LogManager.Info($"起点终点距离: {distance:F2} 米");
|
||
}
|
||
}
|
||
```
|
||
|
||
## 日志文件位置
|
||
|
||
日志文件存储在:
|
||
```
|
||
C:\ProgramData\Autodesk\Navisworks Manage 2026\plugins\TransportPlugin\logs\
|
||
```
|
||
|
||
文件命名:
|
||
- `debug.log` - 当前日志
|
||
- `debug.log.1`, `debug.log.2` - 历史日志(自动轮转)
|
||
|
||
## 注意事项
|
||
|
||
1. **永远不要使用 Console.WriteLine**:
|
||
```csharp
|
||
// ❌ 错误:在Navisworks中不可见
|
||
Console.WriteLine("Error occurred");
|
||
|
||
// ✅ 正确:写入日志文件
|
||
LogManager.Error("Error occurred");
|
||
```
|
||
|
||
2. **错误日志要包含异常**:
|
||
```csharp
|
||
// ❌ 不够详细
|
||
LogManager.Error($"失败: {ex.Message}");
|
||
|
||
// ✅ 包含堆栈信息
|
||
LogManager.Error($"失败: {ex.Message}", ex);
|
||
```
|
||
|
||
3. **避免在循环中大量记录**:
|
||
```csharp
|
||
// ❌ 可能导致日志文件过大
|
||
foreach (var point in points)
|
||
{
|
||
LogManager.Debug($"处理点: {point.Name}"); // 1000个点=1000条日志
|
||
}
|
||
|
||
// ✅ 只记录摘要
|
||
LogManager.Debug($"开始处理 {points.Count} 个点...");
|
||
// ... 处理 ...
|
||
LogManager.Debug($"点处理完成");
|
||
```
|
||
|
||
4. **使用类别前缀便于过滤**:
|
||
```csharp
|
||
LogManager.Info("[路径规划] 开始生成");
|
||
LogManager.Info("[碰撞检测] 发现3个碰撞");
|
||
LogManager.Info("[渲染] 路径显示完成");
|
||
```
|