A .NET naplózási szolgáltatói
A naplózási szolgáltatók megőrzik a naplókat, kivéve a Console
szolgáltatót, amely csak standard kimenetként jeleníti meg a naplókat. Az Azure Application Insights-szolgáltató például naplókat tárol az Azure Application Insightsban. Több szolgáltató is engedélyezhető.
Az alapértelmezett .NET-feldolgozó alkalmazássablonok:
- Használja az Általános szervert.
- Hívja meg CreateApplicationBuilder, amely a következő naplózási szolgáltatókat adja hozzá:
- konzol
- hibakeresési
- EventSource
- EventLog (csak Windows rendszeren)
using Microsoft.Extensions.Hosting;
using IHost host = Host.CreateApplicationBuilder(args).Build();
// Application code should start here.
await host.RunAsync();
Az előző kód a .NET Worker alkalmazássablonokkal létrehozott Program
osztályt jeleníti meg. A következő szakaszok az általános gazdagépet használó .NET-feldolgozó alkalmazássablonok alapján nyújtanak példákat.
A Host.CreateApplicationBuilder
által hozzáadott alapértelmezett naplózási szolgáltatók felülbírálásához hívja meg ClearProviders
, és adja hozzá a kívánt naplózási szolgáltatókat. Például a következő kód:
- Meghívja ClearProviders, hogy távolítsa el az összes ILoggerProvider példányt az építőből.
- Hozzáadja a konzol naplózási szolgáltatóját.
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
builder.Logging.ClearProviders();
builder.Logging.AddConsole();
További szolgáltatók:
Az ILoggertől függő szolgáltatás konfigurálása
A ILogger<T>
függő szolgáltatás konfigurálásához konstruktorinjektálást használjon, vagy adjon meg egy gyári módszert. A gyári módszer megközelítése csak akkor ajánlott, ha nincs más lehetőség. Vegyük például azt a szolgáltatást, amely a DI által biztosított ILogger<T>
-példányt igényli:
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
builder.Services.AddSingleton<IExampleService>(
container => new DefaultExampleService
{
Logger = container.GetRequiredService<ILogger<IExampleService>>()
});
Az előző kód egy Func<IServiceProvider, IExampleService>, amely az első alkalommal fut, amikor a DI-tárolónak IExampleService
példányt kell létrehoznia. A regisztrált szolgáltatások bármelyikét így érheti el.
Beépített naplózási szolgáltatók
A Microsoft-bővítmények a futtatókörnyezeti kódtárak részeként az alábbi naplózási szolgáltatókat tartalmazzák:
A következő naplózási szolgáltatókat a Microsoft szállítja, de nem a futtatókörnyezeti kódtárak részeként. Ezeket további NuGet-csomagként kell telepíteni.
Konzol
A Console
szolgáltató naplózza a kimenetet a konzolon.
Hibakeresés
A Debug
szolgáltató naplókimenetet ír a System.Diagnostics.Debug osztály használatával, különösen a Debug.WriteLine metóduson keresztül, és csak akkor, ha a hibakereső csatlakoztatva van. A DebugLoggerProvider létrehoz egy olyan naplózóosztály példányait, amelyek implementálják a ILogger
felületet.
Eseményforrás
A EventSource
szolgáltató Microsoft-Extensions-Logging
nevű platformfüggetlen eseményforrásba ír. Windows rendszeren a szolgáltató ETWhasznál.
dotnet trace eszköztár
A dotnet-trace eszköz egy platformfüggetlen cli globális eszköz, amely lehetővé teszi egy futó folyamat .NET Core-nyomkövetéseinek gyűjtését. Az eszköz Microsoft.Extensions.Logging.EventSource szolgáltatói adatokat gyűjt LoggingEventSourcesegítségével.
A telepítési utasításokért tekintse meg dotnet-trace. A dotnet-trace
használatával készült diagnosztikai oktatóanyaghoz tekintse meg a -et, amely a magas processzorhasználat hibakeresésével foglalkozik a .NET Core-ben.
Windows eseménynapló
A EventLog
szolgáltató naplókimenetet küld a Windows-eseménynaplónak. A többi szolgáltatótól eltérően a EventLog
szolgáltató nem örökölni az alapértelmezett nem szolgáltatói beállításokat. Ha EventLog
naplóbeállítások nincsenek megadva, alapértelmezés szerint LogLevel.Warning
.
A LogLevel.Warningalatti események naplózásához explicit módon állítsa be a naplószintet. Az alábbi példa az eseménynaplóhoz az alapértelmezett naplószintet LogLevel.Informationértékre állítja be.
"Logging": {
"EventLog": {
"LogLevel": {
"Default": "Information"
}
}
}
AddEventLog túlterhelések megadhatók EventLogSettings. Ha null
vagy nincs megadva, a rendszer a következő alapértelmezett beállításokat használja:
-
LogName
: "Alkalmazás" -
SourceName
: ".NET Runtime" -
MachineName
: A rendszer a helyi gép nevét használja.
Az alábbi kód a SourceName
az alapértelmezett ".NET Runtime"
értékről CustomLogs
értékre módosítja:
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
builder.Logging.AddEventLog(
config => config.SourceName = "CustomLogs");
using IHost host = builder.Build();
host.Run();
Azure App Service
A Microsoft.Extensions.Logging.AzureAppServices szolgáltatói csomag naplókat ír egy Azure App Service-alkalmazás fájlrendszerében lévő szövegfájlokba, és egy Azure Storage-fiókban blobtároló.
A szolgáltatói csomag nem szerepel a futtatókörnyezeti kódtárakban. A szolgáltató használatához adja hozzá a szolgáltatói csomagot a projekthez.
A szolgáltatói beállítások konfigurálásához használja a AzureFileLoggerOptions és a AzureBlobLoggerOptions, ahogyan az alábbi példában látható:
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();
Az Azure App Service-be való telepítéskor az alkalmazás az Azure portál App Service oldalán található App Service-naplók szakaszának beállításait használja. A következő beállítások frissítésekor a módosítások azonnal érvénybe lépnek az alkalmazás újraindítása vagy újbóli üzembe helyezése nélkül.
A naplófájlok alapértelmezett helye a D:\home\LogFiles\Application mappában található. A további alapértelmezett értékek szolgáltatónként eltérőek:
- alkalmazásnaplózás (fájlrendszer): Az alapértelmezett fájlrendszerfájlnév diagnostics-yyyymmdd.txt. Az alapértelmezett fájlméretkorlát 10 MB, a megtartott fájlok alapértelmezett maximális száma pedig 2.
- Alkalmazásnaplózás (Blob): Az alapértelmezett blobnév {app-name}/yyyyy/mm/dd/hh/{guid}_applicationLog.txt.
Ez a szolgáltató csak akkor naplóz, ha a projekt az Azure-környezetben fut.
Azure-naplóstreamelés
Az Azure-naplóstreamelés támogatja a naplótevékenység valós idejű megtekintését a következőből:
- Az alkalmazáskiszolgáló
- A webkiszolgáló
- Sikertelen kérelemkövetés
Az Azure-naplóstreamelés konfigurálása:
- Navigáljon a App Service-naplók lapra az alkalmazás portállapjáról.
- Állítsa alkalmazásnaplózási (fájlrendszer).
- Válassza ki a naplószintet. Ez a beállítás csak az Azure-naplóstreamelésre vonatkozik.
A naplók megtekintéséhez lépjen a Naplóstream oldalra. A naplózott üzeneteket a rendszer a ILogger
felülettel naplózza.
Azure Application Insights
A Microsoft.Extensions.Logging.ApplicationInsights szolgáltatói csomag naplókat ír az Azure Application Insights-hoz. Az Application Insights egy webalkalmazást figyelő szolgáltatás, amely eszközöket biztosít a telemetriai adatok lekérdezéséhez és elemzéséhez. Ha ezt a szolgáltatót használja, az Application Insights eszközeivel lekérdezheti és elemezheti a naplókat.
További információ:
- Application Insights áttekintése
- ApplicationInsightsLoggerProvider for .NET Core ILogger logs – Itt kezdheti el, ha a naplózási szolgáltatót az Application Insights többi telemetriai adatai nélkül szeretné implementálni.
- Application Insights-naplózási csatolófelületek.
- Az Application Insights SDK – Interaktív oktatóanyag telepítése, konfigurálása és inicializálása a Microsoft Learn webhelyen.
Naplózási szolgáltató tervezési szempontjai
Ha a ILoggerProvider interfész saját implementációját és a ILoggermegfelelő egyéni implementációját tervezi fejleszteni, vegye figyelembe a következő szempontokat:
- A ILogger.Log módszer szinkron.
- A naplóállapot és -objektumok élettartamát nem feltételezni.
A ILoggerProvider
megvalósítása ILoggerProvider.CreateLogger metóduson keresztül hoz létre egy ILogger
. Ha a megvalósítás nem blokkoló módon szeretné várólistára helyezni a naplózási üzeneteket, az üzeneteket először materializálni kell, vagy a naplóbejegyzések létrehozásához használt objektumállapotot szerializálni kell. Ezzel elkerülheti az eldobott objektumok okozta kivételeket.
További információ: Egyéni naplózási szolgáltató implementálása a .NET.
Külső naplózási szolgáltatók
Íme néhány külső naplózási keretrendszer, amelyek különböző .NET-számítási feladatokkal működnek:
- elmah.io (GitHub-adattár)
- EFLogger (GitHub-adattár)
- Gelf (GitHub-adattár)
- JSNLog (GitHub-adattár)
- KissLog.net (GitHub-adattár)
- Log4Net (GitHub-adattár)
- NLog (GitHub-adattár)
- NReco.Logging (GitHub-adattár)
- Sentry (GitHub-adattár)
- Serilog (GitHub-adattár)
- Stackdriver (GitHub-adattár)
Egyes külső keretrendszerek képesek szemantikai naplózást, más néven strukturált naplózási.
A külső keretrendszerek használata hasonló az egyik beépített szolgáltatóhoz:
- NuGet-csomag hozzáadása a projekthez.
- A naplózási keretrendszer által biztosított
ILoggerFactory
vagyILoggingBuilder
bővítmény metódus meghívása.
További információkért tekintse meg az egyes szolgáltatók dokumentációját. A Microsoft nem támogatja a külső naplózási szolgáltatókat.
Lásd még:
- Naplózás a .NET-ben.
- Egyéni naplózási szolgáltató implementálása a .NET.
- .NET-nagy teljesítményű naplózása.