Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Günlük sağlayıcıları, günlükleri yalnızca standart çıkış olarak görüntüleyen Console sağlayıcısı dışında günlükleri kalıcı hale döndürür. Örneğin, Azure Application Insights sağlayıcısı günlükleri Azure Application Insights'ta depolar. Birden çok sağlayıcı etkinleştirilebilir.
Varsayılan .NET Çalışanı uygulama şablonları:
- Genel Ana Bilgisayarkullanın.
-
CreateApplicationBuilder'ı çağırın, bu da aşağıdaki günlük sağlayıcılarını ekler:
- konsol
- hata ayıklama
- EventSource
- EventLog (sadece Windows)
using Microsoft.Extensions.Hosting;
using IHost host = Host.CreateApplicationBuilder(args).Build();
// Application code should start here.
await host.RunAsync();
Yukarıdaki kod, .NET Çalışanı uygulama şablonlarıyla oluşturulan Program sınıfını gösterir. Sonraki birkaç bölümde Generic Host kullanan .NET Worker uygulama şablonlarına dayalı örnekler sağlanır.
Host.CreateApplicationBuildertarafından eklenen varsayılan günlük sağlayıcıları kümesini geçersiz kılmak için ClearProviders çağırın ve istediğiniz günlük sağlayıcılarını ekleyin. Örneğin, aşağıdaki kod:
- Oluşturucudan tüm ClearProviders örneklerini kaldırmak için ILoggerProvider çağırır.
- Konsolu günlük sağlayıcısını ekler.
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
builder.Logging.ClearProviders();
builder.Logging.AddConsole();
Diğer sağlayıcılar için bkz:
ILogger'a bağlı bir hizmet yapılandırma
Bir hizmeti ILogger<T>'a bağımlı olarak yapılandırmak için oluşturucu enjeksiyonu kullanın veya bir fabrika yöntemi sağlayın. Fabrika yöntemi yaklaşımı yalnızca başka seçenek yoksa önerilir. Örneğin, DI tarafından sağlanan bir ILogger<T> örneği gerektiren bir hizmeti düşünün:
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
builder.Services.AddSingleton<IExampleService>(
container => new DefaultExampleService
{
Logger = container.GetRequiredService<ILogger<IExampleService>>()
});
DI kapsayıcısının bir <örneğini oluşturması gerektiğinde, yukarıdaki kod, ilk defa çalışan bir >'dir. Kayıtlı hizmetlere bu şekilde erişebilirsiniz.
Yerleşik günlük sağlayıcıları
Microsoft Uzantıları, çalışma zamanı kitaplıklarının bir parçası olarak aşağıdaki günlük sağlayıcılarını içerir:
Aşağıdaki günlük sağlayıcıları Microsoft tarafından gönderilir, ancak çalışma zamanı kitaplıklarının bir parçası olarak gönderilmez. NuGet paketlerinden yüklenmelidir.
Konsol
Console sağlayıcısı çıkışı konsola kaydeder.
Hata ayıklama
Debug sağlayıcısı, özellikle System.Diagnostics.Debug yöntemi aracılığıyla ve yalnızca hata ayıklayıcı eklendiğinde Debug.WriteLine sınıfını kullanarak günlük çıktısı yazar.
DebugLoggerProvider, ILogger arabirimini uygulayan bir günlükçü sınıfının örneklerini oluşturur.
Olay Kaynağı
EventSource sağlayıcısı, adı Microsoft-Extensions-Loggingolan platformlar arası bir olay kaynağına yazar. Windows'da sağlayıcı ETWkullanır.
dotnet izleme araçları
dotnet-trace aracı, çalışan bir işlemin .NET Core izlemelerinin toplanmasını sağlayan platformlar arası bir CLI genel aracıdır. Araç, Microsoft.Extensions.Logging.EventSourcekullanarak LoggingEventSource sağlayıcı verilerini toplar.
Yükleme yönergeleri için bkz. dotnet-trace .
dotnet-tracekullanan bir tanılama öğreticisi için bkz. .NET Core yüksek CPU kullanımında hata ayıklama.
Windows Olay Günlüğü
EventLog sağlayıcısı günlük çıkışını Windows Olay Günlüğü'ne gönderir. Diğer sağlayıcılardan farklı olarak, EventLog sağlayıcı varsayılan sağlayıcı dışı ayarları devralmaz .
EventLog günlük ayarları belirtilmezse, varsayılan LogLevel.Warningolur.
LogLevel.Warning'den düşük olayları kaydetmek için, günlük seviyesini net bir şekilde belirleyin. Aşağıdaki örnek, Olay Günlüğü varsayılan günlük düzeyini LogLevel.Informationolarak ayarlar:
"Logging": {
"EventLog": {
"LogLevel": {
"Default": "Information"
}
}
}
AddEventLog aşırı yüklemeleriEventLogSettingsgeçebilir.
null veya belirtilmezse, aşağıdaki varsayılan ayarlar kullanılır:
-
LogName: "Uygulama" -
SourceName: ".NET Çalışma Zamanı" -
MachineName: Yerel makine adı kullanılır.
Aşağıdaki kod, SourceName varsayılan ".NET Runtime" değerinden CustomLogsolarak değiştirir:
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
builder.Logging.AddEventLog(
config => config.SourceName = "CustomLogs");
using IHost host = builder.Build();
host.Run();
Azure App Service
Microsoft.Extensions.Logging.AzureAppServices sağlayıcı paketi, Azure App Service uygulamasının dosya sistemindeki metin dosyalarına ve bir Azure Depolama hesabındaki blob depolama günlükleri yazar.
Sağlayıcı paketi çalışma zamanı kitaplıklarına dahil değildir. Sağlayıcıyı kullanmak için sağlayıcı paketini projeye ekleyin.
Sağlayıcı ayarlarını yapılandırmak için, aşağıdaki örnekte gösterildiği gibi AzureFileLoggerOptions ve AzureBlobLoggerOptionskullanın:
using Microsoft.Extensions.Logging.AzureAppServices;
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args)
builder.Logging.AddAzureWebAppDiagnostics();
builder.Services.Configure<AzureFileLoggerOptions>(options =>
{
options.FileName = "azure-diagnostics-";
options.FileSizeLimit = 50 * 1024;
options.RetainedFileCountLimit = 5;
});
builder.Services.Configure<AzureBlobLoggerOptions>(options =>
{
options.BlobName = "log.txt";
});
using IHost host = builder.Build();
// Application code should start here.
await host.RunAsync();
Azure App Service'e dağıtıldığında uygulama, Azure portalının App Service sayfasının App Service günlükleri bölümündeki ayarları kullanır. Aşağıdaki ayarlar güncelleştirildiğinde, değişiklikler uygulamanın yeniden başlatılmasına veya yeniden dağıtılma işlemine gerek kalmadan hemen geçerli olur.
Günlük dosyalarının varsayılan konumu D:\home\LogFiles\Application klasöründedir. Diğer varsayılanlar sağlayıcıya göre farklılık gösterir:
- Uygulama Günlüğü (Dosya Sistemi): Varsayılan dosya sistemi dosya adı diagnostics-yyyymmdd.txt. Varsayılan dosya boyutu sınırı 10 MB'tır ve tutulan varsayılan dosya sayısı üst sınırı 2'dir.
- Uygulama Günlüğü (Blob): Varsayılan blob adı {app-name}/yyyy/mm/dd/hh/{guid}_applicationLog.txt.
Bu sağlayıcı yalnızca proje Azure ortamında çalıştırıldığında günlüğe kaydeder.
Azure günlük veri akışı
Azure günlük akışı, aşağıdaki kaynaklardan günlük etkinliğinin gerçek zamanlı olarak görüntülenmesini destekler:
- Uygulama sunucusu
- Web sunucusu
- Başarısız istek izleme
Azure günlük akışını yapılandırmak için:
- Uygulamanın portal sayfasından App Service günlükleri sayfasına gidin.
- Uygulama Günlüğü (Dosya Sistemi)'i olarakayarlayın.
- Günlük Düzeyseçin. Bu ayar yalnızca Azure günlük akışı için geçerlidir.
Günlükleri görüntülemek için Günlük Akışı sayfasına gidin. İletiler ILogger arabirimiyle günlüğe kaydedilir.
Azure Application Insights
Microsoft.Extensions.Logging.ApplicationInsights sağlayıcı paketi, günlükleri Azure Application Insights'a yazar. Application Insights, bir web uygulamasını izleyen ve telemetri verilerini sorgulamak ve çözümlemek için araçlar sağlayan bir hizmettir. Bu sağlayıcıyı kullanıyorsanız, Application Insights araçlarını kullanarak günlüklerinizi sorgulayabilir ve analiz edebilirsiniz.
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
- Application Insights'a genel bakış
- .NET Core ILogger günlükleri için ApplicationInsightsLoggerProvider - Günlük kaydı sağlayıcısını, Application Insights telemetri sistemi olmadan uygulamak istiyorsanız buradan başlayın.
- Application Insights günlük bağdaştırıcıları.
- Uygulamalarınızın performansını ve kararlılığını artırmak için Application Insights'ta sunulan araçları kullanmayı öğrenin.
Günlüğe kaydetme sağlayıcısı tasarımında dikkat edilmesi gerekenler
ILoggerProvider arabiriminin kendi uygulamasını ve ILoggerilgili özel uygulamasını geliştirmeyi planlıyorsanız aşağıdaki noktaları göz önünde bulundurun:
- ILogger.Log yöntemi eşzamanlı.
- Kayıt durumu ve nesnelerin ömrü varsayılmamalıdır.
ILoggerProvider'ün bir uygulaması, ILogger yöntemi aracılığıyla bir ILoggerProvider.CreateLogger oluşturur. Uygulamanız, günlük iletilerini engellemesiz bir şekilde kuyruğa almaya çalışıyorsa, iletilerin önce oluşturulması veya günlük girdisini oluşturmak için kullanılan nesne durumunun seri hale getirilmesi gerekir. Bu şekilde, imha edilmiş nesnelerden kaynaklanabilecek istenmeyen istisnalar önlenir.
Daha fazla bilgi için bkz. .NET özel günlük sağlayıcısı uygulama.
Üçüncü taraf günlük sağlayıcıları
Çeşitli .NET iş yükleriyle çalışan bazı üçüncü taraf kayıt tutma çerçeveleri şunlardır:
- elmah.io (GitHub deposu)
- EFLogger (GitHub deposu)
- Gelf (GitHub deposu)
- JSNLog (GitHub deposu)
- KissLog.net (GitHub deposu)
- Log4Net (GitHub deposu)
- NLog (GitHub deposu)
- NReco.Logging (GitHub deposu)
- Sentry (GitHub deposu)
- Serilog (GitHub deposu)
- Stackdriver (GitHub deposu)
Bazı üçüncü taraf çerçeveler, anlamsal günlük kaydı, diğer adıylayapılandırılmış günlük kaydı, gerçekleştirebilir.
Üçüncü taraf çerçevesi kullanmak, yerleşik sağlayıcılardan birini kullanmaya benzer:
- Projenize bir NuGet paketi ekleyin.
- Loglama çerçevesi tarafından sağlanan bir
ILoggerFactoryveyaILoggingBuilderuzantı metodunu çağırın.
Daha fazla bilgi için her sağlayıcının belgelerine bakın. Üçüncü taraf günlük sağlayıcıları Microsoft tarafından desteklenmez.
Ayrıca bkz.
- .NET'te günlük kaydı .
- .NET'te özel bir günlük sağlayıcısı uygulayın.
- .NET'te yüksek performanslı kayıt.