ASP.NET Core记录日志

下面是关于使用ASP.NET Core记录日志的完整攻略。

1. 理解ASP.NET Core中的日志记录

ASP.NET Core中内置了一个日志记录框架,可以很方便地在应用程序中记录日志。它支持输出到不同媒介,如控制台、文件、事件日志等,并支持不同的级别,如信息、警告、错误等。

常见的使用情况是将日志输出到文件中,以便于后续查阅。在ASP.NET Core中,我们可以通过扩展IServiceCollection类中的AddLogging方法来集成日志记录框架,并手动配置日志记录器。

2. 使用Serilog记录日志

Serilog是一款流行的.NET日志框架,支持多种日志数据源,并提供了一些有用的扩展功能。在ASP.NET Core中使用Serilog非常简单,只需要添加一个nuget包即可。

步骤一:安装Serilog及其扩展

在ASP.NET Core项目中,通过Nuget包管理器安装Serilog及其扩展,如下所示:

Install-Package Serilog
Install-Package Serilog.Enrichers.Environment
Install-Package Serilog.Settings.Configuration
Install-Package Serilog.Sinks.File

步骤二:在Startup.cs中配置Serilog

在Startup.cs文件中,我们需要添加如下代码:

using Serilog;
using Serilog.Formatting.Compact;

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();

        // 添加Serilog日志记录器
        Log.Logger = new LoggerConfiguration()
            .ReadFrom.Configuration(Configuration)
            .CreateLogger();

        // 注册日志记录器到服务容器中
        services.AddLogging(loggingBuilder =>
        {
            loggingBuilder.ClearProviders();
            loggingBuilder.AddSerilog();
        });
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseSerilogRequestLogging();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHttpsRedirection();
        app.UseRouting();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}

这个代码片段中,我们首先使用ReadFrom.Configuration方法读取appsettings.json文件中的日志配置。然后使用CreateLogger方法将其实例化,并把日志记录器注册到服务容器中,以便于后续的使用。

步骤三:在appsettings.json中配置日志输出

最后,需要在appsettings.json文件中添加Serilog的配置:

"Serilog": {
    "MinimumLevel": {
        "Default": "Information",
        "Override": {
            "Microsoft": "Warning",
            "System": "Warning"
        }
    },
    "WriteTo": [
        {
            "Name": "Console",
            "Args": {
                "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} <{SourceContext}>{NewLine}{Exception}"
            }
        },
        {
            "Name": "File",
            "Args": {
                "path": "logs/log.txt",
                "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact",
                "rollingInterval": "Day",
                "retainedFileCountLimit": 7
            }
        }
    ]
}

上述代码片段的含义是,设置日志输出的最低级别为Information,同时设置了控制台和文件两个输出源并配置了输出模板和相关参数,这里我们使用前面添加的Serilog扩展中提供的CompactJsonFormatter,它可以将日志格式化为紧凑的JSON格式。

步骤四:添加日志记录

完成上述步骤,我们就可以在应用程序中使用Serilog来记录日志了,如下所示:

using Microsoft.Extensions.Logging;

public class SampleController : ControllerBase
{
    private readonly ILogger<SampleController> _logger;

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

    [HttpGet("test")]
    public IActionResult Test()
    {
        _logger.LogInformation("This is a test log.");
        return Ok();
    }
}

在上述代码中,我们通过构造函数注入ILogger接口并在Action方法中记录信息级别的日志。

3. 使用NLog记录日志

NLog是另一款流行的.NET日志框架,它也支持多种日志数据源,如文件、数据库等,并且提供了丰富的配置选项。

步骤一:安装NLog及其扩展

在ASP.NET Core项目中,通过Nuget包管理器安装NLog及其扩展,如下所示:

Install-Package NLog
Install-Package NLog.Extensions.Logging

步骤二:在Startup.cs中配置NLog

在Startup.cs文件中,我们需要添加如下代码:

using Microsoft.Extensions.Logging;
using NLog.Extensions.Logging;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddSingleton<ILoggerFactory, LoggerFactory>();
        services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHttpsRedirection();
        app.UseRouting();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });

        // 配置NLog
        NLog.LogManager.LoadConfiguration("nlog.config");
        app.AddNLogWeb();
    }
}

在这个代码片段中,我们首先注入了ILoggerFactory和ILogger到服务容器中。然后在Configure方法中配置了NLog,使用NLog.LogManager.LoadConfiguration方法加载NLog的配置文件nlog.config,并通过AddNLogWeb方法将NLog注册到ASP.NET Core中。

步骤三:在nlog.config文件中配置NLog

最后,需要在nlog.config文件中配置NLog,定义日志输出源及其相关参数:

<?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="Info"
      internalLogFile="c:\temp\nlog-internal.log">

  <targets>
    <target name="console" xsi:type="ColoredConsole" layout="${longdate} ${uppercase:${level}} ${message} ${exception}" />

    <target xsi:type="File" name="file" fileName="logs/nlog.log"
            layout="${longdate} ${uppercase:${level}} ${message} ${exception}">
      <acrhiveAboveSize>1024000</acrhiveAboveSize>
      <maxArchiveFiles>10</maxArchiveFiles>
    </target>
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="console,file" />
  </rules>

</nlog>

上述代码片段的含义是,我们在targets节点中定义了日志输出的两个源,分别为ColoredConsole和File,并指定了文件名和一个布尔表达式,用于在日志切割时区分不同的日志文件。在rules节点中,我们将日志级别设置为Trace,并将日志输出到console和file两个源中。

步骤四:添加日志记录

最后,我们可以在应用程序中使用NLog来记录日志了,如下所示:

using Microsoft.Extensions.Logging;

public class SampleController : ControllerBase
{
    private readonly ILogger<SampleController> _logger;

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

    [HttpGet("test")]
    public IActionResult Test()
    {
        _logger.LogInformation("This is a test log.");
        return Ok();
    }
}

在上述代码中,我们通过构造函数注入ILogger接口并在Action方法中记录信息级别的日志。

以上是使用Serilog和NLog记录日志的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET Core记录日志 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • IIS7环境下实现svg/woff/woff2字体正常显示

    下面是在IIS7环境下实现svg/woff/woff2字体正常显示的完整攻略: 1. 确认IIS是否支持SVG/woff/woff2 在IIS管理器中,选择服务器,点击“MIME类型”,确认MIME类型中是否包含了.svg/.woff/.woff2文件类型,并确保其对应的Content Type是否正确。 2. 修改web.config文件 在网站的根目录下…

    Azure 2023年5月25日
    00
  • js实现的简单radio背景颜色选择器代码

    下面是“js实现的简单radio背景颜色选择器代码”的完整攻略。 简述 在网页设计中,经常需要让用户选择背景颜色,这个时候我们可以使用radio按钮实现一个简单的背景颜色选择器。下面是一个实现代码的示例。 HTML部分 首先,在HTML部分,我们需要添加一个表单,包含多个radio按钮,每个按钮代表一种不同颜色。 <form id="bg-f…

    Azure 2023年5月25日
    00
  • visual studio 2015 企业版 序列号及官方下载地址

    Visual Studio 2015 企业版序列号及官方下载地址 Visual Studio 2015 是一款功能强大、广泛应用的 IDE 工具,能够集成多种语言,支持跨平台开发。本文主要介绍 Visual Studio 2015 企业版的序列号和官方下载地址。 1. 官方下载地址 首先,您需要进入 Visual Studio 2015 官方下载页面:htt…

    Azure 2023年5月25日
    00
  • 怎么永久激活Win10 Win10激活秘钥/激活码分享

    如何永久激活Win10 在使用Windows 10系统过程中,可能会出现提示需要激活的情况。为了正常使用电脑和系统,我们需要激活Win10系统。本文提供两种简单易行永久激活Win10的方法,其中包括使用激活秘钥/激活码的方式和通过工具自动激活的方式。 方法一:使用Win10激活秘钥/激活码 首先,打开一个可以浏览网页的浏览器(比如Chrome),进入JSBo…

    Azure 2023年5月25日
    00
  • 2021最新Windows10原版镜像ISO激活秘钥推荐 附激活工具

    2021最新Windows10原版镜像ISO激活秘钥推荐 附激活工具 本文将为读者介绍如何下载安装Windows10原版镜像,并提供激活秘钥和附带的激活工具。 下载Windows10原版镜像ISO文件 首先,访问微软官方下载页面(https://www.microsoft.com/zh-cn/software-download/windows10)。 在该页…

    Azure 2023年5月25日
    00
  • win10 21H1专业版/企业版/教育版激活秘钥推荐 附激活工具

    关于win10 21H1专业版/企业版/教育版激活秘钥推荐以及激活工具的攻略,我整理了一份详细的说明,具体内容如下。 1. win10 21H1专业版/企业版/教育版激活秘钥推荐 在进行win10系统的激活之前,我们需要获取一个有效的激活秘钥。下面是几种win10 21H1专业版/企业版/教育版激活秘钥的推荐: win10 21H1专业版激活秘钥:VK7JG…

    Azure 2023年5月25日
    00
  • 微软Visual Studio 2017正式版发布 宇宙第一开发工具

    微软Visual Studio 2017正式版发布 宇宙第一开发工具 简介 Visual Studio 2017 是微软的一款全面集成化的开发环境,能够满足不同语言的开发需求,包括但不限于 C#, C++, JavaScript 等语言的开发,同时还集成了 Git、Azure 等工具服务。Visual Studio 2017 被誉为“宇宙第一开发工具”。 下…

    Azure 2023年5月25日
    00
  • 怎么获取最新免费的win10激活秘钥/神key win10激活码分享 激活工具

    怎么获取最新免费的win10激活秘钥/神key win10激活码分享 激活工具攻略 如果你正在使用未激活的Windows 10版本,那么你可能正在寻找一个可用的免费激活码或者有效的激活工具,来激活你的操作系统,获取完整功能。 下面将提供一些获取最新免费的win10激活秘钥/神key win10激活码分享以及激活工具的攻略。 1. 免费的Windows 10激…

    Azure 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部