asp.net 使用 Nlog Methodcall 目标的 MVC 5 项目没有效果
asp.net MVC 5 project using Nlog Methodcall target has no effect
在ASP.net MVC 5项目中,使用Nuget安装Nlog,Nlog.config,Nlog.schema包。
NLog.config 文件中的目标 xsi:type="MethodCall"
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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<targets>
<target name="mc" xsi:type="MethodCall" className="NlogMethodCallWebApp.Models.NLogHelper, NlogMethodCallWebApp" methodName="LogMethod">
<parameter layout="${longdate}" />
<parameter layout="${uppercase:${level}}" />
<parameter layout="${message}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace,Debug,Info,Warn,Error,Fatal" writeTo="mc" />
</rules>
</nlog>
执行调试 HomeController 索引操作方法
HomeController.cs
using NLog;
using System.Web.Mvc;
namespace NlogMethodCallWebApp.Controllers
{
public class HomeController : Controller
{
private static Logger logger = NLog.LogManager.GetCurrentClassLogger();
public ActionResult Index()
{
logger.Trace("This is Trace");
logger.Debug("This is Debug");
logger.Info("This is Info");
logger.Warn("This is Warn");
logger.Error("This is Error");
logger.Fatal("This is Fatal");
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
LogMethod 在class NLogHelper 中设置断点无效
NLogHelper.cs
using System;
using System.Diagnostics;
namespace NlogMethodCallWebApp.Models
{
public class NLogHelper
{
/// <summary>
/// c - NLog
/// </summary>
public static void LogMethod(string longdate, string level, string message)
{
Trace.WriteLine(string.Format("D:{0} L:{1} M:{2}", longdate, level, message));
}
}
}
NLog 不执行 LogMethod 方法。问题出在哪里?
你的日志级别错误。
有多种可能性:
minlevel="Trace,Debug,Info,Warn,Error,Fatal"
<-- 你的,错了
更改为:
levels="Trace,Debug,Info,Warn,Error,Fatal"
或
minlevel="Trace"
或者您也可以使用 minlevel 和 maxlevel
详情:
https://github.com/NLog/NLog/wiki/Configuration-file#log-levels
同时检查该程序集是否在您的输出目录中(您的项目必须引用该程序集)
在ASP.net MVC 5项目中,使用Nuget安装Nlog,Nlog.config,Nlog.schema包。 NLog.config 文件中的目标 xsi:type="MethodCall"
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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<targets>
<target name="mc" xsi:type="MethodCall" className="NlogMethodCallWebApp.Models.NLogHelper, NlogMethodCallWebApp" methodName="LogMethod">
<parameter layout="${longdate}" />
<parameter layout="${uppercase:${level}}" />
<parameter layout="${message}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace,Debug,Info,Warn,Error,Fatal" writeTo="mc" />
</rules>
</nlog>
执行调试 HomeController 索引操作方法
HomeController.cs
using NLog;
using System.Web.Mvc;
namespace NlogMethodCallWebApp.Controllers
{
public class HomeController : Controller
{
private static Logger logger = NLog.LogManager.GetCurrentClassLogger();
public ActionResult Index()
{
logger.Trace("This is Trace");
logger.Debug("This is Debug");
logger.Info("This is Info");
logger.Warn("This is Warn");
logger.Error("This is Error");
logger.Fatal("This is Fatal");
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
LogMethod 在class NLogHelper 中设置断点无效
NLogHelper.cs
using System;
using System.Diagnostics;
namespace NlogMethodCallWebApp.Models
{
public class NLogHelper
{
/// <summary>
/// c - NLog
/// </summary>
public static void LogMethod(string longdate, string level, string message)
{
Trace.WriteLine(string.Format("D:{0} L:{1} M:{2}", longdate, level, message));
}
}
}
NLog 不执行 LogMethod 方法。问题出在哪里?
你的日志级别错误。 有多种可能性:
minlevel="Trace,Debug,Info,Warn,Error,Fatal"
<-- 你的,错了
更改为:
levels="Trace,Debug,Info,Warn,Error,Fatal"
或
minlevel="Trace"
或者您也可以使用 minlevel 和 maxlevel
详情: https://github.com/NLog/NLog/wiki/Configuration-file#log-levels
同时检查该程序集是否在您的输出目录中(您的项目必须引用该程序集)