# logserver **Repository Path**: phgroup/logserver ## Basic Information - **Project Name**: logserver - **Description**: 适用于各种业务场景的远程日志服务器,默认端口6771,支持内网穿透。 支持日志跨日、超10M自动分片保存。 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-28 - **Last Updated**: 2025-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LoggerCenter 一个集中式日志管理工具,支持实时日志查看、日志文件管理和日志服务器功能。 ## 功能特性 - 实时接收并展示客户端发送的日志信息 - 支持日志级别分类(INFO, WARN, ERROR 等) - 提供图形界面操作日志文件 - 自动清理过期日志文件 - 支持日志持久化存储 ## 使用说明 1. 启动应用程序后会自动启动日志服务器 2. 使用 HTTP 请求发送日志到服务器: ```bash curl -X POST http://localhost:8080/log -d '{"level":"INFO","message":"test log"}' ``` 3. 在图形界面中可以: - 查看实时日志 - 加载历史日志文件 - 清理日志 - 刷新日志列表 ## 客户端调用方法 1. 将`LogEntry`移植到你的项目中 2. 将下列方法写入客户端 ``` // 发送信息级别日志 static async Task SendInfoLog(string message) { var log = new LogEntry { Level = "INFO", Message = message, Source = "ConsoleApp", MachineName = Environment.MachineName, ProcessId = Process.GetCurrentProcess().Id.ToString(), Timestamp = DateTime.Now }; await SendLog(log); } // 发送警告级别日志 static async Task SendWarnLog(string message) { var log = new LogEntry { Level = "WARN", Message = message, Source = "ConsoleApp", MachineName = Environment.MachineName, ProcessId = Process.GetCurrentProcess().Id.ToString(), Timestamp = DateTime.Now }; await SendLog(log); } // 发送调试级别日志 static async Task SendDebugLog(string message) { var log = new LogEntry { Level = "DEBUG", Message = message, Source = "ConsoleApp", MachineName = Environment.MachineName, ProcessId = Process.GetCurrentProcess().Id.ToString(), Timestamp = DateTime.Now }; await SendLog(log); } // 发送带异常的错误日志 static async Task SendErrorLogWithException() { try { // 模拟抛出异常 throw new InvalidOperationException("文件访问失败", new UnauthorizedAccessException("没有访问权限")); } catch (Exception ex) { var log = new LogEntry { Level = "ERROR", Message = "处理文件时发生错误", Source = "FileProcessor", MachineName = Environment.MachineName, ProcessId = Process.GetCurrentProcess().Id.ToString(), Timestamp = DateTime.Now, Exception = new LogEntry.ExceptionInfo { Type = ex.GetType().FullName, StackTrace = ex.StackTrace } }; await SendLog(log); } } // 发送日志到服务器 static async Task SendLog(LogEntry log) { var json = JsonConvert.SerializeObject(log); var content = new StringContent(json, Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync(ServerUrl, content); if (response.IsSuccessStatusCode) { Console.WriteLine($"成功发送 {log.Level} 日志: {log.Message}"); } else { Console.WriteLine($"发送日志失败: {response.StatusCode} - {response.ReasonPhrase}"); } } ``` 3. 直接调用即可。 ## 开发者信息 ### 主要组件 - `Form1.cs` - 主界面逻辑,包含服务器实现和UI交互 - `LogManager.cs` - 日志管理核心类,处理日志存储和清理 - `LogEntry` - 日志数据模型定义 ## 许可协议 本项目采用 MIT License,请查看 LICENSE 文件获取详细信息。