Asp.net mvc 记录.net核心应用程序的最佳实践

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

学习如何使用NetCore构建web应用程序。记录事件和错误的最佳方式是什么?

您可以使用NLog,ASP.NET Core提供了一些日志提供程序,例如Console、Debug,但它们无法记录到文件。通过使用NLog,您可以将应用程序日志保存到文件甚至数据库中。步骤如下:

首先,安装NLog NuGet软件包:

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);
}