2014-05-19 14 views
8

Üretim sunucumda neden $ {basedir} nlog.config kullanamıyorum? Ben fileName="${basedir}/logs/${shortdate}.log" kullanıyorsanız, nlog mesajı bilgi kütüğe ama fileName="C:/logs/${shortdate}.log" gibi bir şey değiştirmek eğer mesajı bilgileri The

benim nlog.config kaydeder:

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

Denetleyici:

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

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

Uygulamanızın altında çalıştığı hesabın (Uygulama Havuzu/Ağ Hizmeti/özel), günlükler klasörüne yazma iznine sahip mi? Günlükler klasörü zaten var mı? Bu hesabın klasörü $ {basedir} 'de oluşturma izni var mı? –

+0

@BrendanGreen Uygulama Havuzu/Özel hesap izni nasıl kontrol edilir? Uygulama klasörünü sağ tıklatıp Güvenlik sekmesini tıklatırsam, yalnızca Ağ Hizmeti hesabı vardır ve onun izni yalnızca Salt Okunur olarak ayarlanır – Willy

+0

Peki, uygulamayı nasıl çalıştırıyorsunuz? IIS veya IIS Express veya başka bir şey mi? Her şey, daha fazla ayrıntı sağlamanız gereken geliştirme ortamınıza bağlıdır. –

cevap

8

Bu sorun, dosya izni ile ilgilidir. Kısa hikaye: web uygulamasının çalıştığı kullanıcı, günlük dosyalarını yazma iznine sahip değildir.

.NET sürümüne ve IIS sürümüne bağlı olarak, çeşitli kullanıcılar olabilir.

IIS 6 için web uygulamasının NETWORK SERVICE hesabı olarak çalıştığını söyleyebilirim.

Bu nedenle,/yazma için kullanıcının izni (I web kökünün bir alt klasör olduğunu tahmin)logs klasörü değiştirmek gerekecektir. NLog tarafından otomatik olarak oluşturulacak logs klasörünü istiyorsanız, bunun yerine web köküne bu izinleri vermeniz gerekir.