3.3 KiB
3.3 KiB
LogManager 使用指南
文件位置
src/Utils/LogManager.cs
用途
统一的日志记录管理器。在 Navisworks 插件环境中,Console.WriteLine 不可见,必须使用 LogManager。
日志级别
LogManager.Debug("调试信息"); // 开发调试使用
LogManager.Info("普通信息"); // 一般操作记录
LogManager.Warning("警告信息"); // 需要注意但非错误
LogManager.Error("错误信息"); // 错误(可选异常参数)
LogManager.Fatal("致命错误"); // 严重错误
核心方法
基本信息日志
LogManager.Info("路径创建成功");
LogManager.Info($"路径名称: {route.Name}, 长度: {route.TotalLength}");
带异常的错误日志
try
{
// 某些操作
}
catch (Exception ex)
{
// ✅ 正确:记录异常详情
LogManager.Error($"操作失败: {ex.Message}", ex);
}
调试日志(开发时)
LogManager.Debug($"当前路径点数: {path.Points.Count}");
LogManager.Debug($"网格大小: {grid.Width} x {grid.Height}");
使用示例
示例1:记录操作开始和完成
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:记录重要状态变更
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- 历史日志(自动轮转)
注意事项
-
永远不要使用 Console.WriteLine:
// ❌ 错误:在Navisworks中不可见 Console.WriteLine("Error occurred"); // ✅ 正确:写入日志文件 LogManager.Error("Error occurred"); -
错误日志要包含异常:
// ❌ 不够详细 LogManager.Error($"失败: {ex.Message}"); // ✅ 包含堆栈信息 LogManager.Error($"失败: {ex.Message}", ex); -
避免在循环中大量记录:
// ❌ 可能导致日志文件过大 foreach (var point in points) { LogManager.Debug($"处理点: {point.Name}"); // 1000个点=1000条日志 } // ✅ 只记录摘要 LogManager.Debug($"开始处理 {points.Count} 个点..."); // ... 处理 ... LogManager.Debug($"点处理完成"); -
使用类别前缀便于过滤:
LogManager.Info("[路径规划] 开始生成"); LogManager.Info("[碰撞检测] 发现3个碰撞"); LogManager.Info("[渲染] 路径显示完成");