web-dev-qa-db-fra.com

Où se trouve $ {basedir}, en utilisant NLog?

A moins que cela ne me manque totalement, j'ai l'impression que la documentation NLog utilise ${basedir} dans ses exemples, sans expliquer sa position supposée.

Où puis-je trouver des informations répertoriant toutes les options possibles avec une description significative?

J'ai cette configuration définie:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
  <targets>
    <target name="file" xsi:type="File"
                layout="${longdate} ${logger} ${message}"
                fileName="${basedir}/logs/${shortdate}.txt"
                keepFileOpen="false"
                encoding="iso-8859-2" />
  </targets>
  <rules>
    <logger name="*" minlevel="Debug" writeTo="file" />
  </rules>
</nlog>

Cela fonctionne pour autant que je sache, mais je n'ai aucune idée de l'endroit où il enregistre quoi que ce soit.

22
Spikee

${basedir} - Répertoire dans lequel l'application s'exécute.

Je pense que vous trouverez cette page de manuel utile.

23
galakt

Une autre possibilité d'échec est que si vous utilisez NLog.config, NLog ne peut pas trouver le fichier de configuration. Définissez le fichier sur Copier toujours dans votre build et il se retrouvera dans votre répertoire bin, afin que NLog puisse le trouver lors de l'exécution.

Si vous copiez les informations de configuration NLog sur votre App.config, vous n'aurez pas ce problème.

4
Evan

Sur la base des réponses et commentaires déjà fournis, la réponse peut être résumée pour l'application .NET:

AppDomain.CurrentDomain.BaseDirectory

Pour la console ou l'application Windows Forms, ce répertoire est bin/debug dans Visual Studio. Si l'application est déployée, le chemin sera très probablement le chemin exécutable.

Pour les applications Web (ASP.NET), ce sera le répertoire racine de l'application Web.

La non-visualisation de fichiers peut être déclenchée par plusieurs causes, notamment: des erreurs de configuration NLog et l'impossibilité d'écrire le fichier cible. Pour exposer ces erreurs, assurez-vous que NLog.config (ou la configuration Nlog incorporée dans web.config ou app.config) spécifie un fichier journal interne pour générer ces erreurs:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      internalLogFile="C:\NLogError\NLog.log">

<!-- targets and rules come here -->

</nlog>
4
Alexei

Cela dépend aussi de la plateforme. Pour les projets .Net réguliers, c'est en effet bin ou bin/debug etc. (en fonction de vos paramètres de build)

Pour coreclr/aspnet5, c'est le dossier bin de votre runtime dnx. C'est encore du travail en cours.

3
Julian