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

3.1 KiB
Raw Blame History

DMS日志服务使用说明

概述

DMS项目现在支持Microsoft.Extensions.Logging.ILogger接口的日志服务

  1. NLogLogger类直接实现Microsoft.Extensions.Logging.ILogger接口位于DMS.WPF项目中
  2. 提供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的作用

NLogLoggerFactoryILoggerFactory接口的实现,主要作用是:

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