在asp.net core项目中使用Nlog日志组件
程序员文章站
2024-03-13 12:44:39
...
在所有的应用程序中,日志功能是不可或缺的模块,我们可以根据日志信息进行调试、查看产生的错误信息,在ASP.NET Core中我们可以使用log4net或者NLog日志组件来实现记录日志的功能,这里讲解如何在ASP.NET Core中使用NLog?
NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加即为完善的跟踪调试代码。
NLog是一个简单灵活的.NET日志记录类库。通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的调试诊断信息,根据个人的爱好配置其输出的样式,然后发送到一个或多个输出目标(target)中。
NLog的API非常类似于log4net,且配置方式非常简单。NLog使用路由表进行配置,这样就让NLog的配置文件非常容易阅读,并便于今后维护。
简单来说,NLog就是用来记录项目日志的组件
1.直接在NuGet程序包里,搜Nlog.Web.AspNetCore,我们需要安装以下两个
程序包。
2.在Program类中,配置使用Nlog:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NLog.Web;
namespace AspNetCore01
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).UseNLog();
}
}
3.添加配置文件,名字为nlog.config(Web配置文件):
配置信息:
<?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"
throwConfigExceptions="true"
internalLogLevel="info"
internalLogFile="D:\log\internal-nlog.txt">
<!--autoReload:修改后自动加载,可能会有延迟-->
<!--throwConfigExceptions:NLog日志系统抛出异常-->
<!--internalLogLevel:内部日志的级别-->
<!--internalLogFile:内部日志保存路径,日志的内容大概就是NLog的版本信息,配置文件的地址等等-->
<!--输出日志的配置,用于rules读取-->
<targets>
<!--write logs to file-->
<!--将日志写入文件中,fileName可以指定日志生成的路径-->
<target xsi:type="File" name="allfile" fileName="D:\Log\nlog-all-${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
<!--同样是将文件写入日志中,写入的内容有所差别,差别在layout属性中体现。写入日志的数量有差别,差别在路由逻辑中体现-->
<target xsi:type="File" name="ownFile-web" fileName="D:\Log\nlog-my-${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
<target xsi:type="Null" name="blackhole" />
</targets>
<rules>
<!--路由顺序会对日志打印产生影响。路由匹配逻辑为顺序匹配。-->
<!--All logs, including from Microsoft-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<!--Skip Microsoft logs and so log only own logs-->
<!--以Microsoft打头的日志将进入此路由,由于此路由没有writeTo属性,所有会被忽略-->
<!--且此路由设置了final,所以当此路由被匹配到时。不会再匹配此路由下面的路由。未匹配到此路由时才会继续匹配下一个路由-->
<logger name="Microsoft.*" minlevel="Trace" final="true" />
<!--上方已经过滤了所有Microsoft.*的日志,所以此处的日志只会打印除Microsoft.*外的日志-->
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
</rules>
</nlog>
这样的话,我们就完成了Nlog日志组件的配置。
4.在控制器中,使用该日志组件:在控制器的构造函数中,注入logger对象
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace AspNetCore01.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class NLogTestController:ControllerBase
{
private readonly ILogger<NLogTestController> _logger;
public NLogTestController(ILogger<NLogTestController> logger) {
_logger = logger;
}
[HttpGet("LoggerInfo")]
public IActionResult Get() {
_logger.LogError("Error Information");
_logger.LogDebug("Debug Information");
_logger.LogInformation("prompt Information");
return Ok();
}
}
}
调用Action动作方法,日志文件已生成。
推荐阅读
-
在asp.net core项目中使用Nlog日志组件
-
Asp.Net Core 2.0 之旅---NLog日志的使用教程
-
Asp.Net Core中使用NLog记录日志
-
使用VS2022在ASP.NET Core中构建轻量级服务
-
微服务统计,分析,图表,监控一体化的HttpReports项目在.Net Core 中的使用
-
在ASP.NET Core 3.0中使用Swagger
-
在Asp.Net或.Net Core中配置使用MarkDown富文本编辑器有开源模板代码(代码是.net core3.0版本)
-
ASP.NET Core 3.0 : 二十八. 在Docker中的部署以及docker-compose的使用
-
在Asp.Net Core中配置使用MarkDown富文本编辑器实现图片上传和截图上传(开源代码.net core3.0)
-
在 ASP.NET Core 项目中使用 npm 管理你的前端组件包