September 3, 2023
By: Kevin

dotnet项目中NLog的配置和使用

  1. 功能特性:
  2. 使用方法
  3. 代码例子
  4. 参考

NLog是一个流行的、可扩展的、跨平台的日志记录库,用于在应用程序中实现灵活且高性能的日志记录。

功能特性:

  • 多种日志目标(Targets):提供多种日志输出目标,如控制台、文件、数据库、网络等。
  • 灵活的日志级别:支持多种日志级别,如 Trace、Debug、Info、Warn、Error、Fatal。
  • 丰富的布局渲染器:可以自定义日志消息的格式。
  • 异步日志记录:提高应用程序性能。
  • 可扩展性:可以添加自定义的目标、布局渲染器、过滤器等。
  • 跨平台支持:支持多个平台,包括 Windows、Linux、macOS。

使用方法

  1. 安装 NLog 包:通过 NuGet 包管理器或其他方式添加。
  2. 配置 NLog:创建一个 NLog 配置文件,定义日志目标、日志级别等。
  3. 使用 NLog:在代码中获取 Logger 实例,进行日志记录。
  4. 运行应用:日志将根据配置写入到指定的目标。

代码例子

  #r "nuget: NLog, 5.2.0"

  using NLog;
  var config = new NLog.Config.LoggingConfiguration();

  // 日志格式
  var layout = "${longdate} tid:${threadid} ${callsite} ${message}";

  // 控制台目标
  var logconsole = new NLog.Targets.ConsoleTarget("logconsole")
  {
      Layout = layout
  };

  // 文件目标
  var logfile = new NLog.Targets.FileTarget("logfile")
  {
      FileName = "${date:format=yyyy-MM-dd}.log",  // 使用日期作为文件名
      Layout = layout,
      ArchiveOldFileOnStartup = true, // 启动时归档旧文件
      ArchiveFileName = "${date:format=yyyy-MM-dd}.{#}.log", // 归档文件名
      ArchiveNumbering = ArchiveNumberingMode.Date, // 使用日期作为归档编号
      ArchiveEvery = FileArchivePeriod.Day, // 每天进行归档
      MaxArchiveFiles = 7  // 保留最近7天的归档文件
  };

  // 添加规则
  config.AddRule(LogLevel.Info, LogLevel.Fatal, logfile);
  config.AddRule(LogLevel.Info, LogLevel.Fatal, logconsole);

  // 应用配置
  LogManager.Configuration = config;

  // 创建logger
  var logger = LogManager.GetCurrentClassLogger();

  // 写日志
  logger.Info("Hello, NLog!");

  // 刷新并关闭
  LogManager.Shutdown();

打印的结果, 注意日期和线程ID


2023-09-06 13:14:48.3303 tid:1  Submission#0.Initialize Hello, NLog!
|                          |
v                          v
日期                      线程ID

这样配置后,日志会同时输出到控制台和文件中, 日志文件也有控制

将每天生成一个新文件,并且按照日期进行命名。

同时,通过 MaxArchiveFiles 属性设置了保畈最近7天的日志文件,过期的日志文件将会被自动删除。这样可以有效地管理日志文件,避免占用过多的磁盘空间。

参考

Tags: c# .NET