2014-05-19 13 views
8

Perché non riesco a utilizzare $ {basedir} nlog.config nel mio server di produzione? Se uso fileName="${basedir}/logs/${shortdate}.log", nlog non registra informazioni messaggio, ma se cambio a qualcosa di simile fileName="C:/logs/${shortdate}.log" registrerà informazioni messaggio

mia nlog.config:

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

    <targets>  
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log" 
      layout="${longdate} ${uppercase:${level}} ${message}" /> 
    </targets> 

    <rules> 
    <logger name="*" minlevel="Trace" writeTo="f" /> 
    </rules> 
</nlog> 

Controller:

public class HomeController : Controller 
{ 
    private static Logger logger = LogManager.GetCurrentClassLogger(); 

    public ActionResult Index() 
    { 
     logger.Debug("Test NLog"); 
     return View(); 
    } 
} 
+2

L'account (Pool di app/Servizio di rete/personalizzato) in cui è in esecuzione l'applicazione è autorizzato a scrivere nella cartella dei registri? La cartella dei registri esiste già? Questo account ha il permesso di creare la cartella in '$ {basedir}'? –

+0

@BrendanGreen Come controllare il permesso per il pool di app/account personalizzati? Se faccio clic con il pulsante destro del mouse sulla cartella dell'applicazione e faccio clic sulla scheda Protezione, esiste solo l'account Servizio di rete e la sua autorizzazione è impostata su Sola lettura – Willy

+0

Bene, come si esegue l'applicazione? È tramite IIS o IIS Express o qualcos'altro? Tutto dipende dal tuo ambiente di sviluppo, sul quale dovrai fornire maggiori dettagli. –

risposta

8

Questo problema è correlato all'autorizzazione del file. Breve storia: l'utente che l'applicazione web è in esecuzione come non ha il permesso di scrivere i file di registro.

A seconda della versione di .NET e della versione di IIS, ci sono molti utenti che potrebbero essere.

Per IIS 6, direi che l'applicazione Web è in esecuzione come account NETWORK SERVICE.

Pertanto, è necessario concedere questa autorizzazione all'utente di di scrittura/modifica la cartella logs (che presumo è una sottocartella della web root). Se si desidera che la cartella logs venga creata automaticamente da NLog, sarà necessario concedere queste autorizzazioni alla web root.

Problemi correlati