Domanda

I miei obiettivi NLog è in questo modo:

<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>

Ma questo provoca problemi se l'utente non è un amministratore sul computer, perché non avranno accesso in scrittura a "Programmi". Come posso ottenere qualcosa di simile a %AppData% NLog invece di BaseDir?

È stato utile?

Soluzione

Stai cercando il NLog cartelle speciali .

Esempio:

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

Altri suggerimenti

La risposta di Oren dovrebbe essere la risposta giusta. Tuttavia, per la vita di me non ho potuto farlo funzionare con il mio sito web NET 4.0 utilizzando nCollegatevi 2.0.0.0. Ho finito per usare semplicemente

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

$ {specialfolder: ApplicationData} funziona anche

Le risposte precedenti hanno contribuito a risolvere il problema che stavo avendo, ma un paio di anni più tardi, e la soluzione è ora un po 'diversa in V4.3. La directory e il nome sono combinati con il percorso.

@ collegamento del theGecko è ancora attuale per la sintassi, ma la pagina è carente di un esempio:

https://github.com/nlog/NLog/wiki/ speciale-Folder-layout-renderer

Il seguente esempio potrebbe scrivere il file myLog.log alla dati delle applicazioni gli utenti attuali di roaming directory C:\USers\current.user\AppData\Roaming\My\Path\Somewhere:

fileName="${specialfolder:dir=My/Path/Somewhere/:file=myFile.log:folder=ApplicationData}"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top