You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.8 KiB
3.8 KiB
客户端消息日志记录功能
功能概述
在 StreamClientMessages
方法中添加了自动日志记录功能,将客户端发送和接收的消息分别记录到独立的日志文件中,便于调试和分析。
功能特性
1. 自动日志记录
- 发送消息日志: 记录客户端发送的所有消息到
{clientName}_sent_messages.log
文件 - 接收消息日志: 记录客户端接收的所有消息到
{clientName}_received_messages.log
文件 - 实时记录: 在 SSE 流处理过程中实时记录新消息
- 时间戳: 每条消息都包含详细的时间戳信息
2. 日志文件格式
[2024-01-15 14:30:25.123] [TestClient] [SENT] {"message":"log_get","message_id":1}
--------------------------------------------------------------------------------
[2024-01-15 14:30:25.456] [TestClient] [RECEIVED] {"notification":true,"message":"logs","data":[...]}
--------------------------------------------------------------------------------
API 接口
获取客户端消息日志文件列表
GET /api/message/logs
获取客户端消息日志文件内容
GET /api/message/logs/{fileName}?lines=100
清空客户端消息日志文件
DELETE /api/message/logs?fileName={fileName}
删除客户端消息日志文件
DELETE /api/message/logs/delete?fileName={fileName}
客户端消息流(SSE)
GET /api/message/{clientName}/stream
发送消息到客户端
POST /api/message/{clientName}/send
Content-Type: application/json
{
"type": "command",
"data": {
"action": "test"
}
}
技术实现
1. 后端实现
- 日志目录:
ClientMessageLogs/
目录存储所有日志文件 - 文件命名:
{clientName}_{type}_messages.log
- 编码格式: UTF-8 编码,支持中文
- 异步写入: 使用
File.AppendAllTextAsync
异步写入日志
2. 前端实现
- 实时显示: 使用 SSE 连接实时显示消息
- 文件管理: AJAX 调用管理日志文件
- 模态框: 使用 Bootstrap 模态框显示日志内容
- 响应式设计: 支持不同屏幕尺寸
3. 错误处理
- 文件操作异常: 捕获并记录文件操作错误
- 网络异常: 处理 API 调用失败情况
- 用户确认: 危险操作(删除、清空)需要用户确认
使用方法
1. 启动客户端消息流
访问 /Home/ClientMessages
页面,系统会自动:
- 建立 SSE 连接
- 开始记录发送和接收的消息
- 显示日志文件管理面板
2. 查看日志文件
- 点击"刷新日志文件"按钮更新文件列表
- 点击"查看"按钮在模态框中查看日志内容
- 选择不同的行数显示选项
3. 管理日志文件
- 点击"清空"按钮清空指定日志文件
- 点击"删除"按钮删除指定日志文件
- 支持批量操作(不指定文件名时操作所有文件)
配置说明
日志目录
private readonly string _logsDirectory = "ClientMessageLogs";
日志格式
logBuilder.AppendLine($"[{timestamp}] [{clientName}] [{messageType}] {message}");
logBuilder.AppendLine(new string('-', 80)); // 分隔线
文件大小限制
目前没有设置文件大小限制,建议定期清理或轮转日志文件。
注意事项
- 磁盘空间: 日志文件会持续增长,需要定期清理
- 性能影响: 大量消息时可能影响性能,建议监控
- 文件权限: 确保应用程序有写入日志目录的权限
- 并发安全: 多个客户端同时连接时,日志文件操作是线程安全的
未来改进
- 日志轮转: 按大小或时间自动轮转日志文件
- 压缩存储: 对旧日志文件进行压缩存储
- 日志级别: 支持不同级别的日志记录
- 搜索功能: 在日志内容中添加搜索功能
- 导出功能: 支持导出日志文件为不同格式