1. 程式人生 > 其它 >開發隨筆記錄——ASP.NET Core日誌處理

開發隨筆記錄——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就會生成對應的日誌檔案。