Question

Mes objectifs de NLog est comme ceci:

<targets>
  <target xsi:type="Console" name="console" 
    layout="${longdate}|${level}|${message}" />
  <target xsi:type="File" name="ErrorLog" fileName="${basedir}/error.txt"
          layout="${longdate}
          Trace: ${stacktrace} 
          ${message}" />
  <target xsi:type="File" name="AccessLog" fileName="${basedir}/access.txt"
          layout="${shortdate} | ${message}" />
</targets>

Mais cela pose un problème si l'utilisateur n'est pas un administrateur sur leur machine, car ils ne seront pas avoir accès en écriture à « Program Files ». Comment puis-je obtenir quelque chose comme %AppData% à NLog au lieu de BaseDir?

Était-ce utile?

La solution

Vous cherchez NLog dossiers spéciaux .

Exemple:

...fileName="${specialfolder:folder=ApplicationData}/Program/file.txt"...

Autres conseils

La réponse de Oren devrait être la bonne réponse. Cependant, pour la vie de moi, je ne pouvais pas le faire fonctionner avec mon site Web .NET 4.0 en utilisant NLog 2.0.0.0. Je fini par utiliser simplement

fileName="${basedir}app_data\logs\${shortdate}.log" 

{$ SpecialFolder: ApplicationData} fonctionne aussi

Les réponses précédentes ont aidé à résoudre le problème que j'avais, mais deux ans plus tard et la solution est maintenant quelque peu différente en v4.3. Le répertoire et le nom sont combinés avec le chemin.

@ lien de theGecko est toujours d'actualité pour la syntaxe, mais la page est déficiente d'un exemple:

https://github.com/nlog/NLog/wiki/ spécial-dossier-Mise-Renderer

L'exemple suivant écrire le fichier myLog.log aux utilisateurs actuels des données d'annuaire d'applications d'itinérance C:\USers\current.user\AppData\Roaming\My\Path\Somewhere:

fileName="${specialfolder:dir=My/Path/Somewhere/:file=myFile.log:folder=ApplicationData}"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top