ASP.NET Core 中使用 Nlog 记录信息到文件中
admin
2021-06-03本文作者:梁桐铭- 微软最有价值专家(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 保留版权
感谢您对我的支持