2 votes

NLog ne crée pas de fichiers journaux sur un projet ASP.NET Core

Je suis novice dans l'utilisation de NLog avec ASP.NET Core, j'ai donc suivi le guide ici : https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-(projet.json)

J'ai créé les éléments suivants nlog.config à la racine du répertoire du projet :

<?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"
      internalLogLevel="Warn"
      internalLogFile="c:\temp\internal-nlog.txt">

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

  <!-- define various log targets -->
  <targets>
    <!-- write logs to file -->
    <target xsi:type="File" name="allfile" fileName="${basedir}\nlog-all-${shortdate}.log"
                 layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}" />

    <target xsi:type="File" name="ownFile-web" fileName="${basedir}\nlog-own-${shortdate}.log"
             layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|  ${message} ${exception}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />

    <target xsi:type="Null" name="blackhole" />
  </targets>

  <rules>
    <!--All logs, including from Microsoft-->
    <logger name="*" minlevel="Trace" writeTo="allfile" />

    <!--Skip Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
  </rules>
</nlog>

Dans un contrôleur, j'appelle une ligne comme celle-ci :

_logger.LogInformation("Entered CustomerRange method");

qui renvoie ce qui suit dans la fenêtre de sortie de Visual Studio :

CustomerMgmtAPI.Controllers.CustomerController:Information: Entered CustomerRange method

Cependant, les fichiers journaux réels ne sont jamais créés par NLog. Je me demandais si quelqu'un pouvait indiquer l'erreur dans la configuration de NLog ici, car j'ai examiné la documentation de NLog pour le projet ASP.NET Core et je ne peux pas trouver l'erreur moi-même.

2voto

Luis Delgado Points 145

La solution au problème a donc consisté à supprimer la première ligne de la section nlog.config fichier :

<?xml version="1.0" encoding="utf-8" ?>

J'ai supprimé cette ligne et tout a commencé à fonctionner comme prévu. J'ai également remarqué que Visual Studio me donnait ces erreurs lorsque cette ligne était présente :

Invalid token 'Text' at root level of document.
Unexpected XML declaration. The XML declaration must be the first node in the document and no white space characters are allowed to appear before it.

Il semble dans ce cas que le tutoriel NLog soit cassé, car je viens de reprendre ce fichier à partir de l'exemple pour ASP.NET Core. J'utilise VS2017, donc peut-être y a-t-il une incompatibilité avec cette version de VS ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X