日志管理器


  日志管理器 ILogger 接口提供了记录各种日志的方法。


1、获取实例

  要使用日志管理器,首先得获取到它的实例。我们不推荐使用 new 构造一个实例,而是使用 LoggerFactory 工厂类来创建一个实例。该工厂类提供一个 CreateLogger 方法,可以接收一个 configName 参数,这个参数对应缓存配置(可参考 配置与扩展)中配置项的名称,如果未配置日志配置项,则返回默认的日志管理器单例。如下所示:

[TestMethod]
public void TestCreateLogger()
{
    var logger = LoggerFactory.CreateLogger();
    Assert.IsNotNull(logger); // DefaultLogger
}

  在使用 IOC 的环境中,也可以通过构造注入或属性注入得到 ILogger 的实例。如下所示:

public class HomeController : Controller
{
    private readonly ILogger _logger;
    
    public HomeController(ILogger logger)
    {
        _logger = logger;
    }
}

2、日志级别

  日志级别分为:Info(信息)、Debug(调试)、Warn(警告)、Error(错误)、Fatal(致命)五个级别,分别对应 ILogger 接口的方法。如下所示:

[TestMethod]
public void TestLog()
{
    var logger = LoggerFactory.CreateLogger();
        
    logger.Info("开始处理......");
        
    try
    {
        //处理
    }
    catch (Exception exp)
    {
        logger.Error("处理过程中发生错误。", exp);
    }
        
    logger.Info("完成处理");
}

[TestMethod]
public async Task TestLogAsync()
{
    var logger = LoggerFactory.CreateLogger();
        
    await logger.InfoAsync("开始处理......");
        
    try
    {
        //处理
    }
    catch (Exception exp)
    {
        await logger.ErrorAsync("处理过程中发生错误。", exp);
    }
        
    await logger.InfoAsync("完成处理");
}

3、泛型类记录器

  ILogger 接口的 Create 方法用于创建一个泛型的 Logger<T> 实例,以方便记录具体的类型。