2017-05-11 1 views
0

J'utilise ASP.NET Core et NLog.Web.AspNetCore (4.3.1). NLog n'enregistre pas une mauvaise requête url - pourquoi? Ce qui est à moi NLog.config:Pourquoi nlog n'enregistre-t-il pas une mauvaise requête?

<?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"> 

    <targets> 
    <target name="logfile" xsi:type="File" fileName="${basedir}/nlog.txt" 
      layout="${longdate} url: ${aspnet-request-url} | ${message}"/> 
    </targets> 

    <rules> 
    <logger name="*" minlevel="Warn" writeTo="logfile"/> 
    </rules> 
</nlog> 

Quand j'ai un nlog d'erreur 404 est sauve:

2017-05-11 20: 07: 34,2466 url: | Mon message d'erreur

Url ci-dessus est vide - pourquoi?

Ma méthode Configurer Startup.cs:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
     { 
      loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
      loggerFactory.AddDebug(); 

      // ..... 

      app.UseExceptionHandler("/Error/ApplicationError"); 
      app.UseStatusCodePagesWithReExecute("/Error/Error/{0}"); 

      // ..... 

      loggerFactory.AddNLog(); 
      app.AddNLogWeb(); 

      // ...... 
     } 

Mon contrôleur d'erreur:

public class ErrorController : Controller 
{ 
    private readonly ILogger<ErrorController> _logger; 

    public ErrorController(ILogger<ErrorController> logger) 
    { 
     _logger = logger; 
    } 

    public IActionResult ApplicationError() 
    { 
     return View(); 
    } 

    [Route("/Error/Error/{statusCode}")] 
    public IActionResult Error(int statusCode) 
    { 
     _logger.LogError("My error message"); 

     return View(statusCode); 
    } 
} 
+0

Votre application contient-elle une référence Nuget à 'NLog.Web'? Le rendu de mise en page 'aspnet-request-url' ne fait pas partie de NLog lui-même. – Amy

+0

J'ai NLog.Web.AspNetCore –

Répondre

3

Essayez d'ajouter les extensions AspnetCore à votre configuration NLog:

<?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"> 

    <extensions> 
     <add assembly="NLog.Web.AspNetCore"/> 
    </extensions> 

    ... 
</nlog> 

Voir the NLog AspnetCore documentation pour plus d'informations.

+0

Cela fonctionne - THX beaucoup! –

+0

Splendide! Je suis content d'avoir aidé. – Amy