IIS günlüğü oluşturma ve yeniden yönlendirme

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Uyarı

ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Önemli

Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

ASP.NET Çekirdek Modülü, öğesinin ve öznitelikleri ayarlandıysa stdoutLogEnabled stdout ve stdoutLogFile stderr konsol çıkışını diske aspNetCore yönlendirir. Yoldaki stdoutLogFile tüm klasörler, günlük dosyası oluşturulduğunda modül tarafından oluşturulur. Uygulama havuzunun günlüklerin yazıldığı konuma yazma erişimi olmalıdır (yer tutucunun {APP POOL NAME} uygulama havuzu adı olduğu yazma izni sağlamak için kullanınIIS AppPool\{APP POOL NAME}).

İşlem geri dönüştürme/yeniden başlatma gerçekleşmediği sürece günlükler döndürülemez. Günlüklerin tükettiği disk alanını sınırlamak barındırıcının sorumluluğundadır.

stdout günlüğünün kullanılması yalnızca IIS'de barındırılırken veya Visual Studio ile IIS için geliştirme zamanı desteği kullanılırken uygulama başlatma sorunlarını gidermek için önerilir; yerel olarak hata ayıklarken ve uygulamayı IIS Express ile çalıştırırken değil.

Genel uygulama günlüğü amacıyla stdout günlüğünü kullanmayın. ASP.NET Core uygulamasında rutin günlük kaydı için günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

Günlük dosyası oluşturulduğunda zaman damgası ve dosya uzantısı otomatik olarak eklenir. Günlük dosyası adı, zaman damgası, işlem kimliği ve dosya uzantısı (.log) alt çizgilerle ayrılmış yolun son kesimine stdoutLogFile (genellikle stdout) eklenerek oluşturulur. stdoutLogFile Yol ile stdoutbitiyorsa, 5/2/2018 tarihinde 19:42:32'de oluşturulan 1934 PID'sine sahip bir uygulamanın günlüğü dosya adına stdout_20180205194132_1934.logsahiptir.

stdoutLogEnabled False ise, uygulama başlatma sırasında oluşan hatalar yakalanır ve olay günlüğüne 30 KB'a kadar yayılır. Başlatma işleminden sonra tüm ek günlükler atılır.

Aşağıdaki örnek aspNetCore öğesi, göreli yolda .\log\stdout günlüğünü yapılandırır. AppPool kullanıcısının identity sağlanan yola yazma izni olduğunu onaylayın.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile=".\logs\stdout"
    hostingModel="inprocess">
</aspNetCore>

Azure Uygulaması Hizmeti dağıtımı için bir uygulama yayımlarken, Web SDK değeri stdoutLogFile olarak \\?\%home%\LogFiles\stdoutayarlar. Ortam %home değişkeni, Azure Uygulaması Hizmeti tarafından barındırılan uygulamalar için önceden tanımlanmıştır.

Günlük filtresi kuralları oluşturmak için ASP.NET Core günlük kaydı belgelerinin Kodda günlük filtresi kurallarını uygulama bölümüne bakın.

Yol biçimleri hakkında daha fazla bilgi için bkz . Windows sistemlerinde dosya yolu biçimleri.

Gelişmiş tanılama günlükleri

ASP.NET Çekirdek Modülü, gelişmiş tanılama günlükleri sağlamak için yapılandırılabilir. <handlerSettings> öğesini öğesinde <aspNetCore> web.configöğesine ekleyin. ayarıTRACE, debugLevel tanılama bilgilerinin daha yüksek aslına uygun olmasını sağlar:

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="inprocess">
  <handlerSettings>
    <handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
    <handlerSetting name="debugLevel" value="FILE,TRACE" />
  </handlerSettings>
</aspNetCore>

Yoldaki tüm klasörler (logs yukarıdaki örnekte) günlük dosyası oluşturulduğunda modül tarafından oluşturulur. Uygulama havuzunun günlüklerin yazıldığı konuma yazma erişimi olmalıdır (yer tutucunun {APP POOL NAME} uygulama havuzu adı olduğu yazma izni sağlamak için kullanınIIS AppPool\{APP POOL NAME}).

Hata ayıklama düzeyi (debugLevel) değerleri hem düzeyi hem de konumu içerebilir.

Düzeyler (en azdan en ayrıntılı düzeye sırasıyla):

  • HATA
  • UYARI
  • INFO
  • TRACE

Konumlar (birden çok konuma izin verilir):

  • KONSOL
  • EVENTLOG
  • DOSYA

İşleyici ayarları ortam değişkenleri aracılığıyla da sağlanabilir:

  • ASPNETCORE_MODULE_DEBUG_FILE: Hata ayıklama günlük dosyasının yolu. (Varsayılan: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG: Hata ayıklama düzeyi ayarı.

Uyarı

Bir sorunu gidermek için hata ayıklama günlüğünü dağıtımda gerekenden daha uzun süre etkin bırakmayın. Günlüğün boyutu sınırlı değildir. Hata ayıklama günlüğünün etkin durumda bırakılması, kullanılabilir disk alanını tüketebilir ve sunucu veya uygulama hizmetini kilitleyebilir.

Dosyadaki öğenin bir örneği için bkz. ile web.configASP.NET Çekirdek Modülü yapılandırmasıweb.config.aspNetCore