Files
DMS/软件设计文档/07-日志服务使用说明.md

113 lines
3.1 KiB
Markdown
Raw Permalink Normal View History

2025-09-04 14:46:50 +08:00
# DMS日志服务使用说明
## 概述
DMS项目现在支持Microsoft.Extensions.Logging.ILogger接口的日志服务
1. NLogLogger类直接实现Microsoft.Extensions.Logging.ILogger接口位于DMS.WPF项目中
2. 提供ILoggerFactory用于创建命名的Logger实例位于DMS.WPF项目中
## 如何注册日志服务
`Startup.cs`或程序的依赖注入配置中,使用以下扩展方法注册日志服务:
```csharp
using DMS.Application;
// 在ConfigureServices方法中
services.AddDmsServices();
```
这将注册以下服务:
- `Microsoft.Extensions.Logging.ILogger` 接口及其实现 `NLogLogger`单例位于DMS.WPF.Logging命名空间
- `Microsoft.Extensions.Logging.ILoggerFactory` 接口及其实现 `NLogLoggerFactory`单例位于DMS.WPF.Logging命名空间
## 如何使用日志服务
### 1. 使用构造函数注入ILogger推荐
```csharp
using Microsoft.Extensions.Logging;
public class MyService
{
private readonly ILogger<MyService> _logger;
public MyService(ILogger<MyService> logger)
{
_logger = logger;
}
public void DoSomething()
{
_logger.LogInformation("正在执行操作...");
try
{
// 业务逻辑
}
catch (Exception ex)
{
_logger.LogError(ex, "操作失败");
}
}
}
```
### 2. 使用ILoggerFactory创建命名的Logger
```csharp
using Microsoft.Extensions.Logging;
public class MyService
{
private readonly ILogger _logger;
public MyService(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger("MyService");
}
public void DoSomething()
{
_logger.LogInformation("正在执行操作...");
try
{
// 业务逻辑
}
catch (Exception ex)
{
_logger.LogError(ex, "操作失败");
}
}
}
```
## NLogLoggerFactory的作用
`NLogLoggerFactory``ILoggerFactory`接口的实现,主要作用是:
1. **创建命名的Logger实例**:通过`CreateLogger(string categoryName)`方法可以为不同的类或模块创建具有特定名称的Logger实例
2. **支持依赖注入**:作为服务注册后,其他类可以通过构造函数注入`ILoggerFactory`来创建Logger实例
3. **符合标准**实现Microsoft.Extensions.Logging标准确保与其他.NET日志组件兼容
## 日志级别映射
Microsoft.Extensions.Logging与NLog之间的日志级别映射如下
| Microsoft.Extensions.Logging | NLog |
|-----------------------------|----------|
| Trace | Trace |
| Debug | Debug |
| Information | Info |
| Warning | Warn |
| Error | Error |
| Critical | Fatal |
## 节流功能
NLogLogger提供了节流功能以防止在短时间内产生大量重复的日志日志风暴。默认情况下所有日志都会启用节流节流时间窗口为30秒。
## 配置
NLog的配置文件位于 `DMS.Core\Configurations\nlog.config`,可以根据需要进行修改。