ASP.NET Core 中使用 Nlog 记录信息到文件中

Author Image
admin Tuesday, November 17, 2020 阅读数: 53
Share:

本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP)
本文出自《从零开始学 ASP.NET Core 与 EntityFramework Core》目录
视频课程效果更佳:跨平台开发实战掌握 ASP.NET Core 与 EntityFramework Core

ASP.NET Core 中使用 Nlog 记录信息到文件中

在章节中,我们将学习如何在 ASP.NET Core 中使用 Nlog 记录信息到文件中

ASP.NET Core 支持以下几个第三方日志记录提供程序

NLog Serilog elmah Sentry JSNLog

如果我们知道如何使用其中一个第三方日志记录提供程序工作,那么与其他日志提供程序一起工作是类似的。

如果我们已经学会了使用其中一个第三方日志工具记录日志信息,那么我们再来使用其他的第三方日志提供程序来进行学习啊,它的开发方式其实是类似的,所以这节课我们选用了 Nlog 来进行记录。

在 ASP.NET Core 中使用 NLog

步骤 1:安装NLog.Web.AspNetCore nuget 包

安装 NLog 包后,您将看到.csproj 文件中的 PackageReferenc 包含如下信息:

    <PackageReference Include="NLog.Web.AspNetCore" Version="4.8.4"/>

步骤 2:在项目的根目录中创建 nlog.config 文件

创建 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">

 <!-- 要写入的目标内容 -->
 <targets>
   <!-- 将日志写入文件的具体位置  -->
   <target name="allfile" xsi:type="File"
           fileName="c:\DemoLogs\nlog-all-${shortdate}.log"/>
 </targets>

 <!-- 将日志程序名称映射到目标的规则 -->
 <rules>
   <!--记录所有日志,包括Microsoft级别-->
   <logger name="*" minlevel="Trace" writeTo="allfile"/>
 </rules>
</nlog>


要了解有关 nlog.config 文件的更多信息,请参阅以下 github wiki 页面

https://github.com/NLog/NLog/wiki/Configuration-file

步骤 3:启用复制到文件夹

右键单击 nlog.config 文件,在解决方案资源管理器中选择属性。在"属性"窗口中设置:

复制到输出目录=如果较新则复制

步骤 4: 启用 NLog 来记录我们的日志信息

除了使用默认日志记录提供程序(即 Console,Debug 和 EventSource)之外,我们还使用扩展方法 AddNLog()添加了 NLog。此方法位于NLog.Extensions.Logging命名空间中。

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .ConfigureLogging((hostingContext, logging) =>
        {
            logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
            logging.AddConsole();
            logging.AddDebug();
            logging.AddEventSourceLogger();
           //启用NLog作为日志提供程序之一
            logging.AddNLog();
        })
        .UseStartup<Startup>();
}

如果只想要 NLog 作为日志记录提供程序,只需要清除其他日志记录提供程序,然后添加 NLog。


public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .ConfigureLogging((hostingContext, logging) =>
        {
           //删除所有默认记录日志提供程序
            logging.ClearProviders();
            logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
           //添加NLog作为日志提供程序
            logging.AddNLog();
        })
       .UseStartup<Startup>();
}

文章说明

如果您觉得我的文章质量还不错,欢迎打赏,也可以订阅我的视频哦
未得到授权不得擅自转载本文内容,52abp.com 保留版权
感谢您对我的支持

关注微信公众号:角落的白板报

公众号:角落的白板报