开发随笔记录——ASP.NET Core日志处理

声明:本文章使用ASP.NET Core 3.1

众所周知,日志对于开发人员的帮助简直就是如鱼得水。目前我个人认为好用的日志组件有Log4Net、NLog。本文章使用的是NLog。

首先要在NuGet程序包中安装NLog.Web.AspNetCore,该库依赖NLog.Extensions.Logging,而NLog.Extensions.Logging又依赖于Nlog。

之后在Program.cs文件中添加.UseNLog();方法,如图所示:

之后进行配置文件(NLog.config)的添加,代码如下:

<?xml version="1.0"?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogLevel="Warn"
      internalLogFile="${basedir}\logs\internal-nlog.txt">

    <extensions>
        <add assembly="NLog.Web.AspNetCore"/>
    </extensions>

    <targets>
        <target name="allfile" xsi:type="File"
                fileName="${basedir}\logs\${shortdate}.log"
                encoding="utf-8"
                layout="[${longdate}|${callsite}][${machinename}][${level}] ${message} ${exception}" />
    </targets>
    <rules>
        <!--All logs, including from Microsoft-->
        <logger name="*" minlevel="Trace" writeTo="allfile" />

        <!--Skip Microsoft logs and so log only own logs-->
        <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
        <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
    </rules>
</nlog>

具体的配置信息,可以根据自身需要进行更改。(博主个人认为,以上配置已经够用了)

最后就可以在控制器中进行注入使用了,如下代码:

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

namespace Demo.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class TestController : ControllerBase
    {
        private readonly ILogger<TestController> _logger;

        public NLogTestController(ILogger<TestController> logger)
        {
            _logger = logger;
        }

        [HttpGet]
        public IActionResult Get()
        {
            _logger.LogError("这是错误信息");
            _logger.LogDebug("这是调试信息");
            _logger.LogInformation("这是提示信息");

            return Ok();
        }
    }
}

之后进行调用API就会生成对应的日志文件。

 

posted @ 2021-08-11 13:56  苏瑾~  阅读(145)  评论(0)    收藏  举报