# EasyElasticLogger.NETFramework **Repository Path**: lovelydouble/easy-elastic-logger-.netframework ## Basic Information - **Project Name**: EasyElasticLogger.NETFramework - **Description**: 一个轻量级、灵活、强大的 Elasticsearch 日志记录组件,专为 .NET Framework 应用程序设计,支持多环境、多配置方式和集群部署。 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-11 - **Last Updated**: 2026-01-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EasyElasticLogger.NETFramework > 🚀🚀🚀 一个简单易用的Elasticsearch日志记录器,专为.NET Framework应用程序设计
**简单易用 | 功能丰富 | 生产就绪**
## ✨✨ 功能特性 | 特性类别 | 功能描述 | |----------|----------| | ✅ **配置灵活** | 支持多种配置方式:直接传参、JSON文件、.config文件 | | ✅ **索引策略** | 多种索引策略:固定索引、按日期滚动索引,符合ELK最佳实践| | ✅ **集群支持** | 支持单节点和集群模式,完善的连接管理 | | ✅ **日志级别** | 丰富的日志级别:Debug, Info, Warn, Error, Fatal | | ✅ **容错机制** | 完善的容错机制和错误处理,确保日志不丢失 | | ✅ **性能优化** | 灵活的API设计,支持同步和异步日志记录 | | ✅ **多环境支持** | 支持多环境配置(开发、测试、生产环境) | | ✅ **兼容性强** | 兼容AutoCAD二次开发,支持自定义配置文件路径 | | ✅ **使用简单** | 采用静态类设计,使用简单直观 | --- ## 🎯🎯 适用场景 > **📢📢 重要说明:本插件仅适用于 .NET Framework 4.7.2 和 4.8 版本的应用程序,Elasticsearch 版本兼容 Elasticsearch 7.x** ### 📊📊 需要将日志集中到 ELK 进行统一分析的系统 - 需要实时日志监控和告警的系统 - 希望利用 Kibana 进行日志可视化和分析的场景 ### 🖥️🖥️ 基于 .NET Framework 4.7.2/4.8 的应用程序 - **WinForm** 桌面应用程序(.NET Framework 4.7.2/4.8) - **WPF** 桌面应用程序(.NET Framework 4.7.2/4.8) - **WebForm** 传统 Web 应用程序(.NET Framework 4.7.2/4.8) - **Windows服务** 和后台任务程序(.NET Framework 4.7.2/4.8) - **控制台应用程序** 的日志记录需求(.NET Framework 4.7.2/4.8) ### 🔧🔧 特殊开发环境中的诊断与运维日志需求 - **AutoCAD** 二次开发插件的日志记录(基于.NET Framework) - **Revit** 等BIM软件的插件开发(基于.NET Framework) - 工业软件插件的诊断和运维监控 - 需要自定义配置文件路径的特殊环境部署 ### ❌❌ 不支持的场景 - .NET Core / .NET 5/6/7/8 应用程序 - .NET Standard 类库项目 - .NET Framework 4.7.2 以下版本 - 跨平台应用程序(Linux/macOS) --- ## 📦📦 安装 通过NuGet包管理器安装: ```powershell Install-Package EasyElasticLogger.NETFramework ```xml 或者通过.NET CLI安装: ```bash dotnet add package EasyElasticLogger.NETFramework ```xml --- ## 🚀🚀🚀 快速开始 ### 1. 基本使用 ```csharp using EasyElasticLogger.NETFramework.ES.Logging; // 在应用程序启动时初始化(如Program.cs或Startup.cs中) ElasticLogger.Initialize("Production"); // 在任何需要记录日志的地方直接使用静态方法 // 同步记录日志 ElasticLogger.Info("这是一条信息日志"); ElasticLogger.Warn("这是一条警告日志"); ElasticLogger.Error("这是一条错误日志", new Exception("测试异常")); // 异步记录日志 await ElasticLogger.InfoAsync("这是一条异步信息日志"); await ElasticLogger.ErrorAsync("这是一条异步错误日志", new Exception("测试异常")); ```xml ### 2. 环境配置 #### 使用环境变量 ```csharp // 设置环境变量 Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development"); // 或者设置 ENVIRONMENT 环境变量 Environment.SetEnvironmentVariable("ENVIRONMENT", "Test"); // 使用环境特定的配置初始化 ElasticLogger.Initialize(); ```xml #### 使用初始化方法指定环境 ```csharp // 直接指定环境 ElasticLogger.Initialize("Production"); ```xml --- ## ⚙⚙⚙️ 配置方式 配置加载优先级:**直接传参 > JSON配置 > .config配置** ### 1. 📝📝 直接传参配置 ```csharp var config = new LoggerConfiguration { Enabled = true, IndexPrefix = "myapp-log", IndexStrategy = IndexStrategy.DailyRolling, ApplicationName = "MyApplication", BatchSize = 100, TimeoutMs = 10000, Cluster = new ClusterConfigurationElement { Nodes = new List { "http://localhost:9200" }, Username = "elastic", Password = "password", UseSsl = false, SkipSslVerification = false, ConnectionTimeoutMs = 5000, MaxRetries = 2 } }; ElasticLogger.Initialize(config); ```xml ### 2. 📄📄 JSON配置文件(支持环境特定配置) ```csharp // 会自动查找 logger-config.Production.json 或 logger-config.json ElasticLogger.InitializeFromJson("logger-config.json", "Production"); ```xml #### JSON配置文件示例 **默认配置 (logger-config.json)** ```json { "Enabled": true, "IndexPrefix": "myapp-log", "IndexStrategy": "DailyRolling", "ApplicationName": "MyApplication", "BatchSize": 100, "TimeoutMs": 10000, "Cluster": { "Nodes": ["http://localhost:9200"], "Username": "elastic", "Password": "password", "UseSsl": false, "SkipSslVerification": false, "ConnectionTimeoutMs": 5000, "MaxRetries": 2 } } ```xml **生产环境配置 (logger-config.Production.json)** ```json { "Enabled": true, "IndexPrefix": "myapp-log-prod", "IndexStrategy": "DailyRolling", "ApplicationName": "MyProductionApp", "BatchSize": 100, "TimeoutMs": 10000, "Cluster": { "Nodes": ["http://prod-es1:9200", "http://prod-es2:9200", "http://prod-es3:9200"], "Username": "elastic", "Password": "prod_password", "UseSsl": true, "SkipSslVerification": false, "ConnectionTimeoutMs": 10000, "MaxRetries": 3 } } ```xml **使用示例** ```csharp // 使用默认JSON配置文件 ElasticLogger.InitializeFromJson("logger-config.json"); // 使用指定环境的JSON配置文件 ElasticLogger.InitializeFromJson("logger-config.json", "Production"); ```xml ### 3. ⚙⚙⚙️ .config配置文件(支持环境特定配置) ```xml
```xml ### 4. 🖥🖥🖥️ 自定义配置文件路径(兼容AutoCAD二次开发) ```csharp // 使用自定义配置文件路径和环境初始化 ElasticLogger.Initialize(@"C:\\MyApp\\config\\myapp.config", "Production"); ``` --- ## 📋📋 日志记录示例 ### 同步日志记录 ``csharp // Debug级别日志 ElasticLogger.Debug("调试信息", "MyClass.Method"); // Info级别日志 ElasticLogger.Info("一般信息", "MyClass.Method"); // Warn级别日志 ElasticLogger.Warn("警告信息", "MyClass.Method"); // Error级别日志 ElasticLogger.Error("错误信息", new Exception("异常详情"), "MyClass.Method"); // Fatal级别日志 ElasticLogger.Fatal("严重错误", new Exception("异常详情"), "MyClass.Method"); // 带附加数据的日志 var userData = new { UserId = 123, UserName = "张三" }; ElasticLogger.Info("用户登录", "UserService.Login", userData); ``` ### 异步日志记录 ``csharp // 异步记录不同级别的日志 await ElasticLogger.DebugAsync("调试信息", "MyClass.Method"); await ElasticLogger.InfoAsync("一般信息", "MyClass.Method"); await ElasticLogger.WarnAsync("警告信息", "MyClass.Method"); await ElasticLogger.ErrorAsync("错误信息", new Exception("异常详情"), "MyClass.Method"); await ElasticLogger.FatalAsync("严重错误", new Exception("异常详情"), "MyClass.Method"); ``` --- ## 🔧🔧 配置参数详解 ### Logger配置项 | 属性 | 类型 | 默认值 | 描述 | |------|------|--------|------| | `Enabled` | `bool` | `true` | 是否启用日志记录功能 | | `IndexPrefix` | `string` | `"app-log"` | 索引前缀 | | `IndexStrategy` | `IndexStrategy` | `DailyRolling` | 索引策略(Fixed/DailyRolling) | | `FixedIndexName` | `string` | `null` | 固定索引名称(仅在IndexStrategy为Fixed时使用) | | `ApplicationName` | `string` | `"DefaultApp"` | 应用程序名称 | | `BatchSize` | `int` | `100` | 批量发送日志的大小 | | `TimeoutMs` | `int` | `10000` | 发送超时时间(毫秒) | ### Cluster配置项 | 属性 | 类型 | 默认值 | 描述 | |------|------|--------|------| | `Nodes` | `List` | `empty` | Elasticsearch节点地址列表 | | `Username` | `string` | `null` | 用户名(用于Basic认证) | | `Password` | `string` | `null` | 密码(用于Basic认证) | | `UseSsl` | `bool` | `false` | 是否启用SSL | | `SkipSslVerification` | `bool` | `false` | 是否跳过SSL证书验证 | | `ConnectionTimeoutMs` | `int` | `5000` | 连接超时时间(毫秒) | | `MaxRetries` | `int` | `2` | 最大重试次数 | ### 📊📊 IndexStrategy索引策略 | 策略 | 描述 | |------|------| | **Fixed** | 固定索引,所有日志都写入同一个索引 | | **DailyRolling** | 按日期滚动索引,每天生成一个新的索引(默认) | --- ## 🔄🔄 环境配置支持 ### 支持的环境 - 🛠🛠🛠️ **Development** - 开发环境 - 🧪🧪🧪 **Test** - 测试环境 - 🏭🏭🏭 **Production** - 生产环境 ### 环境识别优先级 1. 🥇🥇🥇 环境变量 `ASPNETCORE_ENVIRONMENT` 2. 🥈🥈🥈 环境变量 `ENVIRONMENT` 3. 🥉🥉🥉 AppSettings中的 `Environment` 配置项 --- ## 📄📄 许可证 本项目采用 **MIT许可证** - 查看 LICENSE 文件了解详情。 ---
**让日志记录变得简单而强大** ✨✨