Files
NetVizor/Common/Logger/README.md
T
2025-05-26 23:10:26 +08:00

96 lines
2.8 KiB
Markdown

# UniversalLogger - 通用日志记录库
一个基于Serilog构建的功能完整的C#日志记录库,支持多种输出方式、自动维护、配置灵活等特性。
## 主要功能
✅ **多种输出方式**: 支持控制台、文件输出,可单独或同时使用
✅ **按日期分割**: 自动按日期创建日志文件
✅ **文件大小控制**: 超过指定大小自动创建新文件
✅ **自动压缩**: 指定天数后自动压缩旧日志文件
✅ **自动清理**: 超过保留期限自动删除旧日志
✅ **配置灵活**: 支持代码配置、JSON文件配置
✅ **功能完整**: 支持各级别日志、异常堆栈、上下文信息
✅ **性能优化**: 基于Serilog高性能日志框架
✅ **易于使用**: 提供静态类和实例两种使用方式
## 安装依赖
在你的项目中添加以下NuGet包:
```xml
<PackageReference Include="Serilog" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageReference Include="Serilog.Formatting.Json" Version="1.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
```
## 快速开始
### 1. 使用默认配置
```csharp
using UniversalLogger;
// 使用默认配置创建日志记录器
using var logger = new UniversalLogger(new LoggerConfig());
logger.LogInformation("Hello, World!");
logger.LogWarning("这是一个警告");
logger.LogError("这是一个错误");
```
### 2. 使用静态日志记录器
```csharp
// 初始化静态日志记录器
Log.Initialize();
// 直接使用
Log.Information("应用程序启动");
Log.Warning("警告信息");
Log.Error(exception, "发生错误: {Message}", exception.Message);
```
### 3. 从配置文件加载
创建 `appsettings.json` 文件:
```json
{
"Logging": {
"EnableConsole": true,
"EnableFile": true,
"LogPath": "logs",
"MaxFileSizeMB": 1,
"RetentionDays": 30,
"CompressDaysThreshold": 3,
"MinimumLevel": "Information",
"OutputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
"UseJsonFormat": false,
"CompressCheckIntervalHours": 24
}
}
```
使用配置文件:
```csharp
// 从配置文件初始化
Log.InitializeFromJsonFile("appsettings.json");
Log.Information("使用配置文件的日志记录器");
```
## 配置选项
| 属性 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `EnableConsole` | bool | true | 是否启用控制台输出 |
| `EnableFile` | bool | true | 是否启用文件输出 |
| `LogPath` | string | "logs" | 日志文件存储路径 |
| `MaxFileSizeMB` | int | 1 | 单个日志文件最大大小(MB) |
| `RetentionDays` | int | 30 | 日志保留天