2014-05-19 15 views
8

Dlaczego nie mogę użyć $ {basedir} nlog.config na moim serwerze produkcyjnym? Jeśli używam fileName="${basedir}/logs/${shortdate}.log", nlog nie zaloguje info wiadomość, ale jeśli zmienię coś jak fileName="C:/logs/${shortdate}.log" będzie rejestrować Komunikat informacyjny

mój plik 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> 

Kontroler:

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

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

Czy konto (App Pool/Usługa sieciowa/niestandardowe), na którym działa aplikacja, ma uprawnienia do zapisu w folderze dzienników? Czy folder dzienników już istnieje? Czy to konto ma uprawnienia do utworzenia folderu w '$ {basedir}'? –

+0

@BrendanGreen Jak sprawdzić uprawnienia do konta aplikacji/konta niestandardowego? Jeśli kliknę prawym przyciskiem myszy folder aplikacji i kliknę kartę Zabezpieczenia, istnieje tylko konto usługi sieciowej, a jego uprawnienie jest ustawione na Tylko do odczytu. – Willy

+0

Jak działa aplikacja? Czy to za pośrednictwem IIS lub IIS Express, czy coś innego? Wszystko zależy od twojego środowiska programistycznego, które będziesz potrzebował podać więcej szczegółów. –

Odpowiedz

8

Ten problem dotyczy uprawnienia do pliku. Krótka historia: użytkownik, który uruchamia aplikację internetową, ponieważ nie ma uprawnień do zapisywania plików dziennika.

W zależności od wersji .NET i wersji IIS istnieje wiele różnych użytkowników.

Dla IIS 6, chciałbym powiedzieć, że aplikacja internetowa działa jako konto NETWORK SERVICE.

Dlatego trzeba przyznać to uprawnienie użytkownika do zapisu/modyfikować folder logs (co przypuszczam jest podfolder korzenia internetowej). Jeśli chcesz, aby folder logs był tworzony automatycznie przez program NLog, musisz zamiast tego przyznać te uprawnienia do katalogu głównego.