Files
DMS/软件设计文档/07-日志服务使用说明.md
2025-09-04 14:46:50 +08:00

113 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`,可以根据需要进行修改。