pasa - usando la ubicación de AppData en NLog
como abrir appdata en windows 10 (4)
$ {specialfolder: ApplicationData} también funciona
Mis objetivos NLog es así:
<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>
Pero esto causa problemas si el usuario no es un administrador en su máquina, porque no tendrán acceso de escritura a "Archivos de programa". ¿Cómo puedo obtener algo como %AppData%
para NLog en lugar de BaseDir?
Estás buscando las carpetas especiales de NLog .
Ejemplo:
...fileName="${specialfolder:folder=ApplicationData}/Program/file.txt"...
La respuesta de Oren debería ser la respuesta correcta. Sin embargo, durante toda mi vida no pude hacer que funcionara con mi sitio web .NET 4.0 usando nLog 2.0.0.0. Terminé usando simplemente
fileName="${basedir}app_data/logs/${shortdate}.log"
Las respuestas anteriores ayudaron a resolver el problema que estaba teniendo, pero un par de años más tarde y la solución ahora es algo diferente en v4.3. El directorio y el nombre del archivo se combinan con la ruta.
El enlace de @ theGecko sigue vigente para la sintaxis, pero la página carece de un ejemplo:
https://github.com/nlog/NLog/wiki/Special-Folder-Layout-Renderer
El siguiente ejemplo escribiría el archivo myLog.log
en el directorio de itinerancia de datos de la aplicación actual de los usuarios C:/USers/current.user/AppData/Roaming/My/Path/Somewhere
:
fileName="${specialfolder:dir=My/Path/Somewhere/:file=myFile.log:folder=ApplicationData}"