在 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

猜你喜欢

转载自blog.csdn.net/LanSeTianKong12/article/details/82851942