在.net Mvc项目内添加Log日志

在Mvc项目中添加日志大致分4步

1.NuGet 下载 NLog 和 NLog.config

 

 

2.修改 NLog.config 文件

 

 可复制下列代码粘贴上去

 <targets>
    <!--此部分中的所有目标将自动异步-->
    <target name="asyncFile" xsi:type="AsyncWrapper">
      <!--项目日志保存文件路径说明fileName="${basedir}/保存目录,以年月日的格式创建/${shortdate}/${记录器名称}-${单级记录}-${shortdate}.txt"-->
      <target name="log_file" xsi:type="File"
        fileName="${basedir}/ProjectLogs/${shortdate}/${logger}-${level}-${shortdate}.txt"
        layout="${longdate} | ${message} ${onexception:${exception:format=message} ${newline} ${stacktrace} ${newline}"
        archiveFileName="${basedir}/archives/${logger}-${level}-${shortdate}-{#####}.txt"
        archiveAboveSize="102400"
        archiveNumbering="Sequence"
        concurrentWrites="true"
        keepFileOpen="false" />
    </target>
    <!--使用可自定义的着色将日志消息写入控制台-->
    <target name="colorConsole" xsi:type="ColoredConsole" layout="[${date:format=HH\:mm\:ss}]:${message} ${exception:format=message}" />
  </targets>

  <!--规则配置,final - 最终规则匹配后不处理任何规则-->
  <rules>
    <logger name="Microsoft.*" minlevel="Info" writeTo="" final="true" />
    <logger name="*" minlevel="Info" writeTo="asyncFile" />
    <logger name="*" minlevel="Warn" writeTo="colorConsole" />
  </rules>

 

3.App_Start 写入 FilterConfig.cs 和 ExceptionHandlerAttribute.cs 文件    写入 LoggerHelper.cs 

 

 

 ExceptionHandlerAttribute.cs  文件内容

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Nlog2Demo
{
    public class ExceptionHandlerAttribute : HandleErrorAttribute
    {

        public override void OnException(ExceptionContext filterContext)
        {
            base.OnException(filterContext);
            LoggerHelper.Error(filterContext.Exception.ToString());
        }

    }
}

 

FilterConfig.cs 文件内容

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Nlog2Demo
{
    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            //filters.Add(new HandleErrorAttribute());
            filters.Add(new ExceptionHandlerAttribute());
        }
    }
}

LoggerHelper.cs  文件内容

using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Nlog2Demo
{
    public class LoggerHelper
    { /// <summary>
      /// 实例化nLog,即为获取配置文件相关信息
      /// </summary>
        private static readonly NLog.Logger _logger = LogManager.GetCurrentClassLogger();
        private static LoggerHelper _obj;

        public static LoggerHelper _
        {
            get => _obj ?? (new LoggerHelper());
            set => _obj = value;
        }

        #region Debug,调试
        public static void Debug(string msg)
        {
            _logger.Debug(msg);
        }

        public static void Debug(string msg, Exception err)
        {
            _logger.Debug(err, msg);
        }
        #endregion

        #region Info,信息
        public static void Info(string msg)
        {
            _logger.Info(msg);
        }

        public static void Info(string msg, Exception err)
        {
            _logger.Info(err, msg);
        }
        #endregion

        #region Warn,警告
        public static void Warn(string msg)
        {
            _logger.Warn(msg);
        }

        public static void Warn(string msg, Exception err)
        {
            _logger.Warn(err, msg);
        }
        #endregion

        #region Trace,追踪
        public static void Trace(string msg)
        {
            _logger.Trace(msg);
        }

        public static void Trace(string msg, Exception err)
        {
            _logger.Trace(err, msg);
        }
        #endregion

        #region Error,错误
        public static void Error(string msg)
        {
            _logger.Error(msg);
        }

        public static void Error(string msg, Exception err)
        {
            _logger.Error(err, msg);
        }
        #endregion

        #region Fatal,致命错误
        public static void Fatal(string msg)
        {
            _logger.Fatal(msg);
        }

        public static void Fatal(string msg, Exception err)
        {
            _logger.Fatal(err, msg);
        }
        #endregion
    }
}

WebApiConfig.cs  文件内容

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace Nlog2Demo
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服务

            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

 

 

 

 

4. 在Global.asax  注册 FilterConfig

 

 

Global.asax 文件内容 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.Http;

namespace Nlog2Demo
{
    public class Global : HttpApplication
    {
        void Application_Start(object sender, EventArgs e)
        {
            // 在应用程序启动时运行的代码
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);//注册全局的Filter
        }
    }
}

 

完成以上步骤即可

posted on 2020-10-22 11:02  透明的鱼!  阅读(855)  评论(0)    收藏  举报

导航