日志系统

日志记录是一项至关重要的功能,它帮助开发者跟踪应用程序的运行状况、诊断和监控问题。.NET Core 提供了一个灵活且易于使用的日志系统,支持多种日志级别、日志提供程序以及配置方式。

日志级别

Trace(用于详细诊断信息)

Debug(用于调试信息)

Information(用于常规信息性消息)

Warning(用于表示某些意外事件的提示)

Error(用于严重错误)

Critical(用于非常严重的错误)

创建日志

public class HomeController : Controller
{
    // 通过构造函数注入logger
    private readonly ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }

    public IActionResult Index()
    {
        // 调用日志方法
        _logger.LogInformation($"{DateTime.Now} 访问了首页");
        return View();
    }
}

第三方日志框架

对于更复杂的日志需求,可以考虑使用第三方日志框架。例如,Serilog 提供了丰富的日志输出格式和支持;NLog 则以其灵活性著称,支持多种日志输出目标;而 Log4Net 是一个基于 Apache Log4j 的日志库,广泛应用于 .NET 应用程序中

Nlog简单使用

官网地址:https://nlog-project.org/

文档地址:https://github.com/NLog/NLog/wiki

1. 安装

2. 配置NLog配置文件

在项目根目录添加NLog.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"
      autoReload="true"
      internalLogLevel="Warn"
      internalLogFile="internal-nlog.txt">

	<!--定义了一个名为 logfile 的文件目标,它将接收所有来自任意命名空间的至少是Warning级别的日志消息-->
	<targets>
		<target xsi:type="File" name="logfile" fileName="${basedir}/logs/logfile.txt"
				layout="${longdate} ${uppercase:${level}} ${message}" />
	</targets>

	<rules>
		<logger name="*" minlevel="Warning" writeTo="logfile" />
	</rules>
</nlog>

3. 配置NLog服务

在 Program.cs 中配置 NLog服务

//清除默认日志程序,启用NLog
builder.Logging.ClearProviders();
builder.Host.UseNLog();

4. 使用NLog记录日志

public class HomeController : Controller
{
    // 创建Logger实例
    private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();

    public IActionResult Index()
    {
        // 记录不同级别的日志信息
        Logger.Trace("Trace message");
        Logger.Debug("Debug message");
        Logger.Info("Info message");
        Logger.Warn("Warn message");
        Logger.Error("Error message");
        Logger.Fatal("Fatal message");
        return View();
    }
}

5. 查看日志文件

可以看到只记录了Warning级别以上的日志消息(在NLog.config中设置)

posted @ 2025-02-20 15:18  getRainbow  阅读(17)  评论(0)    收藏  举报