1. 程式人生 > >在 Asp.net core 2.0 的Web Api 新增logging

在 Asp.net core 2.0 的Web Api 新增logging

我們已經熟悉在ASP.NET CORE專案中新增NLog去記錄我們的日誌。但方法移到web API中行不通。我簡歷記錄下我加的方法。

    1. Nuget 加 NLog.Web.AspNetCore

    2. 加引用 using NLog.Extensions.Logging;
                    using NLog.Web;

    3. 在startup.cs中改public void Configure(IApplicationBuilder app, IHostingEnvironment env)  為

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory), 並加上如下程式碼

 

 loggerFactory.AddNLog();
            app.AddNLogWeb();
            loggerFactory.ConfigureNLog(@“D:\nlog.config”);

4. 加配製檔案 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="Warn"
      internalLogFile="internal-nlog.txt">

  <!-- define various log targets -->
  <targets>
    <!-- write logs to file -->
    <target xsi:type="File" name="allfile" fileName="nlog-all-${shortdate}.log"
                 layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />


    <target xsi:type="File" name="ownFile-web" fileName="nlog-own-${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-->
    <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
  </rules>
</nlog>

 

5. 加一個我自己的Log 類

 

 

using System;
using NLog;

namespace WebApiProducers
{
    public static class WmsReLog
    {
        private static ILogger logger = NLog.LogManager.GetCurrentClassLogger();
      

        public static void Debug(object sender, string msg)
        {
           
            if (sender != null)
            {
                Type type = sender.GetType();
                logger.Debug(string.Format("{0}: {1}", type.FullName, msg));
            }
            else
            {
                logger.Debug(string.Format("{0}: {1}", "Null", msg));
            }
           
        }

        public static void Info(object sender, string msg)
        {
            if (sender != null)
            {
                Type type = sender.GetType();
                logger.Info(string.Format("{0}: {1}", type.FullName, msg));
            }
            else
            {
                logger.Info(string.Format("{0}: {1}", "Null", msg));
            }
          
        }

        public static void Warn(object sender, string msg)
        {
            if (sender != null)
            {
                Type type = sender.GetType();
                logger.Warn(string.Format("{0}: {1}", type.FullName, msg));
            }
            else
            {
                logger.Warn(string.Format("{0}: {1}","Null", msg));
            }
        }

        public static void Error(object sender, string msg)
        {
            if (sender != null)
            {
                Type type = sender.GetType();
                logger.Error(string.Format("{0}: {1}", type.FullName, msg));
            }
            else
            {
                logger.Error(string.Format("{0}: {1}", "Null", msg));
            }
           
        }

        public static void Fatal(object sender, string msg)
        {
            if (sender != null)
            {
                Type type = sender.GetType();
                logger.Fatal(string.Format("{0}: {1}", type.FullName, msg));
            }
            else
            {
            
                logger.Fatal(string.Format("{0}: {1}", "Null", msg));
            }
         
        }

        public static void Trace(object sender, string msg)
        {
            if (sender != null)
            {
                Type type = sender.GetType();
                logger.Trace(string.Format("{0}: {1}", type.FullName, msg));
            }
            else
            {
                logger.Trace(string.Format("{0}: {1}", "Null", msg));
            }
           
        }
    }
}
 

6. 呼叫就行

  WmsReLog.Debug(this, "you just do it ");

--------------------- 本文來自 梭梭888 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/xbqiao/article/details/78427331?utm_source=copy