2012-02-24 9 views
10

Ho un problema con NLog per accedere i registri interni con questa configurazioneNLog registro interno che non funziona con ASP.Net MVC

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    throwExceptions="true" 
    internalLogFile="${basedir}/App_Data/NLog.log" 
    internalLogLevel="Trace"> 

    <targets> 
     <target name="debug" 
       xsi:type="File" 
       fileName="${basedir}/App_Data/Site.log" /> 
    </targets> 

    <rules> 
     <logger name="*" 
       writeTo="debug" /> 
    </rules> 
</nlog> 

Il target "debug" sta lavorando bene, ma l'internalLogFile lavora solo se L'ho impostato come esempio in "D: /NLog.log".

Qualche idea del perché questo accada?

+0

Nota; il percorso predefinito è dove IISExpress è installato. Se si specifica: InternalLogFile = "nLogError.txt". Quindi (almeno sul mio PC) cercherà di scrivere su "C: \ Programmi (x86) \ IIS Express \ nlogExceptions.txt". Quale può avere problemi di autorizzazione. – OzBob

risposta

12

Non è possibile utilizzare i renderizzatori di layout $ {...} nella proprietà internalLogFile. Essi sono per il layout di un obiettivo unico:

<target layout="${...}" /> 

Tenta di utilizzare percorso relativo come ".. \ App_Data \ NLog.log"

+1

Grazie per la risposta. Il percorso relativo non funziona, sembra che abbia bisogno di un percorso assoluto. – Swell

+0

si sbaglia ... sto usando $ {} nel logging interno e funziona benissimo !! @Si può usare $ {..} nel file di registro interno – Neel

+0

@Neel Beh, potrebbe essere cambiato dopo 2 anni :) Potresti mostrare il tuo NLog.config? – kolbasov

1

L'attributo internalLogFile deve essere impostato su un percorso assoluto e l'assembly in esecuzione deve disporre dell'autorizzazione per scrivere su quel percorso assoluto.

Quanto segue ha funzionato per me.

  1. Creare una cartella da qualche parte - ad es. il percorso del tuo disco c:, ad es. c:\logs
  2. Modifica i permessi di questa cartella e dare il controllo completo a tutti
  3. Impostare la configurazione nlog: internalLogFile="C:\logs\nlog.txt"

Ricordarsi di pulire dopo te stesso e non lasciare una directory con questo genere di autorizzazioni su

Problemi correlati