在.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 } } }
完成以上步骤即可
让我们一起来学习C#吧~~~
浙公网安备 33010602011771号