3.1 KiB
3.1 KiB
DMS日志服务使用说明
概述
DMS项目现在支持Microsoft.Extensions.Logging.ILogger接口的日志服务:
- NLogLogger类直接实现Microsoft.Extensions.Logging.ILogger接口(位于DMS.WPF项目中)
- 提供ILoggerFactory用于创建命名的Logger实例(位于DMS.WPF项目中)
如何注册日志服务
在Startup.cs或程序的依赖注入配置中,使用以下扩展方法注册日志服务:
using DMS.Application;
// 在ConfigureServices方法中
services.AddDmsServices();
这将注册以下服务:
Microsoft.Extensions.Logging.ILogger接口及其实现NLogLogger(单例,位于DMS.WPF.Logging命名空间)Microsoft.Extensions.Logging.ILoggerFactory接口及其实现NLogLoggerFactory(单例,位于DMS.WPF.Logging命名空间)
如何使用日志服务
1. 使用构造函数注入ILogger(推荐)
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
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接口的实现,主要作用是:
- 创建命名的Logger实例:通过
CreateLogger(string categoryName)方法,可以为不同的类或模块创建具有特定名称的Logger实例 - 支持依赖注入:作为服务注册后,其他类可以通过构造函数注入
ILoggerFactory来创建Logger实例 - 符合标准:实现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,可以根据需要进行修改。