1、安装相应程序包:NLog.Web.AspNetCore
Install-Package NLog.Web.AspNetCore
2、在项目的根目录创建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="Info"
internalLogFile="c:\temp\internal-nlog-AspNetCore.txt">
<!-- enable asp.net core layout renderers -->
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<!-- the targets to write to -->
<targets>
<!-- File Target for all log messages with basic details -->
<target xsi:type="File" name="allfile" fileName="${basedir}/Log/Alllogs/${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId:whenEmpty=0}|${level:uppercase=true}|${logger}|${message} ${exception:format=tostring}" />
<!-- File Target for own log messages with extra web details using some ASP.NET core renderers -->
<target xsi:type="File" name="errorfile" fileName="${basedir}/Log/Errorlogs/${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId:whenEmpty=0}|${level:uppercase=true}|${logger}|${message} ${exception:format=tostring}" />
</targets>
<!-- rules to map from logger name to target -->
<rules>
<logger name="WebApplication1.*" minlevel="Debug" writeTo="allfile" />
<logger name="WebApplication1.*" minlevel="Error" writeTo="errorfile"/>
</rules>
</nlog>
具体配置可查看官方文档:配置文件 ·NLog/NLog 维基 (github.com)
3、在Program.cs文件添加以下代码,注入NLog
builder.Logging.ClearProviders();
builder.Host.UseNLog();
4、编写Test测试案例
namespace WebApplication1
{
public class Test1
{
private readonly ILogger<Test1> _logger;
public Test1(ILogger<Test1> logger)
{
_logger = logger;
}
public void WriteLog()
{
_logger.LogDebug("写入Debug日志");
}
public void WriteErrorLog()
{
_logger.LogError("写入Error日志");
}
}
}
5、在Program.cs中注入Test1
builder.Services.AddScoped<Test1>();
6、在Controller中调用测试案例,然后在swagger中调用
namespace WebApplication1.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class Test1Controller : ControllerBase
{
private readonly Test1 test;
public Test1Controller(Test1 test)
{
this.test = test;
}
[HttpGet]
public void 测试NLog的注入()
{
test.WriteLog();
test.WriteErrorLog();
}
}
}
7、测试结果