.NET 日志记录 NLog包的使用

.Net记录日志的方式有多种,比如

System.Diagnostics.Trace 可以通过 System.Diagnostics.Trace 类记录调试和错误信息。它支持不同的监听器(例如:控制台、文件、事件日志等)来接收日志输出。

NLog NLog 是一个灵活且功能强大的开源日志库,支持多种日志级别和多种目标(如文件、数据库、邮件等)。

Serilog Serilog 是另一个强大的日志库,支持结构化日志,可以方便地记录复杂数据结构。

Log4Net Log4Net 是 Apache 提供的日志库,功能全面且使用广泛,适用于各种应用程序。

本文主要介绍NLog的使用

1. 安装NLog

在NuGet程序管理中搜索NLog,点击安装

或者使用 NuGet 包管理器控制台命令:

Install-Package NLog

在 【视图】-【其他窗口】-【程序包管理器控制台】,在控制台中输入Install-Package NLog进行安装。

2. 配置

在项目中添加config文件

编辑配置文件

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <targets>
    <!-- 将日志写入 date-based 文件 -->
    <target xsi:type="File" name="fileTarget" 
            fileName="logs/log_${shortdate}.txt" 
            layout="${longdate}|${level:uppercase=true}|${logger}|${message}" 
            archiveEvery="Day"                 <!-- 每天生成新的日志文件 -->
            archiveNumbering="Date"            <!-- 归档文件根据日期命名 -->
            maxArchiveFiles="7"                <!-- 最多保留 7 个归档文件 -->
            />
            
    <!-- 将日志输出到控制台 -->
    <target xsi:type="Console" name="consoleTarget" 
            layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />
  </targets>

  <rules>
    <!-- 记录所有等级的日志到文件 -->
    <logger name="*" minlevel="Debug" writeTo="fileTarget" />
    <!-- 记录错误及以上级别的日志到控制台 -->
    <logger name="*" minlevel="Error" writeTo="consoleTarget" />
  </rules>
</nlog>

配置说明:

  • fileName="logs/log_${shortdate}.txt":使用 ${shortdate} 占位符,NLog 会自动将其替换为当前日期(格式为 yyyy-MM-dd),从而生成每天新的日志文件,如 logs/log_2023-10-09.txt
  • archiveEvery="Day":这个设置会让 NLog 每天在日志轮转时创建一个新的日志文件。
  • archiveNumbering="Date":归档文件将以日期编号,这样每个归档文件都将带有相应的日期。
  • maxArchiveFiles="7":最多保留 7 个归档文件,超过这个数量的文件将被删除。

3.应用

  class Program
  {
      // 创建一个 logger 实例
      private static readonly Logger logger = LogManager.GetCurrentClassLogger();
      static async Task Main(string[] args)
      {

          try
          {
              logger.Debug("调试日志");
              logger.Info("程序开始运行");


              Class1 class1 = new Class1();

              // 可能会发生异常的代码
              throw new Exception("一个示例异常65265");
          }
          catch (Exception ex)
          {
              // 记录异常信息
              logger.Error( ex.Message);
          }
          finally
          {
              // 确保最后记录一些结束信息
              logger.Info("程序结束");
          }
      }


  }

4. 其他详情

4.1 关于rules

在 NLog 配置文件中的 <rules> 部分,name="*" 表示日志记录器的名称匹配所有的日志记录器。具体来说:

  • * 是一个通配符,表示匹配任何名称的日志记录器。这意味着这一规则适用于所有类别的日志(无论是哪个类、命名空间或组件所记录的日志)。
<logger name="*" minlevel="Debug" writeTo="fileTarget" />

这条规则的意思是:所有名称的日志记录器(即所有的日志消息)都会被记录到指定的 fileTarget 目标中,条件是日志级别大于或等于 Debug。换句话说,Debug、Info、Warn、Error 和 Fatal 等级的日志都会被写入到文件中。

<logger name="*" minlevel="Error" writeTo="consoleTarget" />

这条规则的意思是:所有名称的日志记录器都会将日志级别大于或等于 Error 的消息输出到控制台。这意味着只有 Error 和 Fatal 等级的日志才会在控制台上显示。

4.2 关于日志的等级

NLog 日志等级用于指示日志消息的严重性,并帮助开发者过滤和查找日志信息。NLog 支持以下几种日志等级(从最低到最高):

  1. Trace:用于跟踪代码的执行流程和详细的调试信息。适合开发阶段使用,通常用于记录非常详细的消息。

  2. Debug:用于调试目的的详细信息,通常用于开发和测试阶段。帮助开发者理解程序的内部运作。

  3. Info:用于常规的信息性消息,表示程序的正常运行状态。例如,记录用户操作、系统事件等。

  4. Warn:用于警告性消息,表示可能的潜在问题,但不会影响程序的正常运行。例如,某些依赖项不可用,但程序仍然可以继续运行。

  5. Error:用于记录错误消息,表示程序运行中发生了异常。通常需要关注,以便后续进行错误处理。

  6. Fatal:用于重大错误消息,表示系统无法继续运行。通常指的是严重的运行时错误,导致程序崩溃或无法恢复的状态。

日志等级排序

这几种日志等级的排序从低到高,如下:

  1. Trace
  2. Debug
  3. Info
  4. Warn
  5. Error
  6. Fatal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值