NLOG注入Asp.Net.Core.WebAPI

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、测试结果

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值