Asp.net mvc 记录.net核心应用程序的最佳实践
学习如何使用NetCore构建web应用程序。记录事件和错误的最佳方式是什么?您可以使用NLog,ASP.NET Core提供了一些日志提供程序,例如Console、Debug,但它们无法记录到文件。通过使用NLog,您可以将应用程序日志保存到文件甚至数据库中。步骤如下: 首先,安装NLog NuGet软件包:Asp.net mvc 记录.net核心应用程序的最佳实践,asp.net-mvc,.net-core,Asp.net Mvc,.net Core,学习如何使用NetCore构建web应用程序。记录事件和错误的最佳方式是什么?您可以使用NLog,ASP.NET Core提供了一些日志提供程序,例如Console、Debug,但它们无法记录到文件。通过使用NLog,您可以将应用程序日志保存到文件甚至数据库中。步骤如下: 首先,安装NLog NuGet软件包: Install-Package NLog.Web.AspNetCore 然后在nlog使用的项目中创建一个名为nlog.config的配置文件,如下所示: <?xml versi
Install-Package NLog.Web.AspNetCore
然后在nlog使用的项目中创建一个名为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">
<variable name="logDir" value="${basedir}/logs" />
<targets>
<target name="logFile"
xsi:type="File"
fileName="${logDir}/log_${shortdate}.log"
layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}"/>
<target name="logConsole" xsi:type="Console" />
</targets>
<rules>
<logger name="Microsoft.*" minlevel="Trace" writeTo="logConsole" final="true" />
<logger name="*" minlevel="Trace" writeTo="logFile" />
</rules>
</nlog>
最后,您可以在控制器中使用NLog:
public ValueController(ILogger<ValueController> logger)
{
Logger = logger;
}
public ILogger<AuthorController> Logger { get; }
之后,您可以在Startup
类中应用该过滤器:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(config =>
{
config.Filters.Add<GlobalExceptionFilter>();
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public void配置服务(IServiceCollection服务)
{
services.AddMvc(配置=>
{
config.Filters.Add();
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public class GlobalExceptionFilter:IExceptionFilter
{
public GlobalExceptionFilter(IHostingEnvironment env, ILogger<Startup> logger)
{
Environment = env;
Logger = logger;
}
public IHostingEnvironment Environment { get; }
public ILogger Logger { get; }
public void OnException(ExceptionContext context)
{
if (Environment.IsDevelopment())
{
// log exception and show its details
}
else
{
// log exception and show generic error info
}
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(config =>
{
config.Filters.Add<GlobalExceptionFilter>();
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}