2010-01-04 25 views
43

objetivos Mi Nlog es así:utilizando lugar AppData en Nlog

<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 van a tener acceso de escritura a "Archivos de programa" . ¿Cómo puedo obtener algo como %AppData% en NLog en lugar de BaseDir?

Respuesta

69

Está buscando el NLog special folders.

Ejemplo:

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

Sí, pero ¿cómo lo uso? Ya lo intenté, fileName = "$ {ApplicationData} /RentalEase/access.txt" y falla silenciosamente. – Malfist

+0

No recuerdo nada, pero debería ser así: $ {carpetaespecífica: carpeta = NOMBREDEVUELO ESPECIAL} –

+0

Eso no funciona, dice que no es válido. – Malfist

4

$ {specialfolder: ApplicationData} también trabaja

10

respuesta de Oren debería ser la respuesta correcta. Sin embargo, durante toda mi vida no pude hacer que funcione con mi sitio web .NET 4.0 usando nLog 2.0.0.0. Terminé usando simplemente

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

El título de la pregunta usa "AppData" pero no creo que {..ApplicationData} esté asignado a App_Data, tendría que leer el código fuente para verificarlo dos veces. –

+1

Esta pregunta y respuesta aceptada es acerca de la carpeta especial de Windows% appdata%, normalmente C: \ Users \ \ AppData \ Roaming. Parece que no hay una variable especial para la carpeta App_Data de ASP.net. – angularsen

0

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 bajo v4.3. El directorio y el nombre del archivo se combinan con la ruta.

@ enlace de theGecko sigue siendo actual de la sintaxis, pero la página es deficiente de un ejemplo:

https://github.com/nlog/NLog/wiki/Special-Folder-Layout-Renderer

El siguiente ejemplo escribir el archivo myLog.log a los datos de las aplicaciones a los usuarios actuales del directorio C:\USers\current.user\AppData\Roaming\My\Path\Somewhere itinerancia:

fileName="${specialfolder:dir=My/Path/Somewhere/:file=myFile.log:folder=ApplicationData}" 
Cuestiones relacionadas