Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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á:
- Console
- Debug
- 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();
Más szolgáltatók esetén lásd:
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 IExampleServicepé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 NuGet-csomagokból kell telepíteni.
Console
A Console szolgáltató naplózza a kimenetet a konzolon.
Debug
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-Loggingnevű 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 a LoggingEventSourcehasználatával.
A telepítési utasításokért tekintse meg dotnet-trace. A dotnet-tracehaszná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 beállítja az eseménynapló alapértelmezett naplószintjét LogLevel.Informationértékre:
"Logging": {
"EventLog": {
"LogLevel": {
"Default": "Information"
}
}
}
A AddEventLog túlterhelések be tudják fogadni a EventLogSettingsparamétereket. 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ó. Más 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:
- Az alkalmazás portállapjáról navigáljon az Alkalmazásszolgáltatás-naplók lapra.
- Állítsa be a alkalmazásnaplózást (fájlrendszer)állapotba.
- 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ót a következő források tartalmaznak:
- Az 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.
- Megtudhatja, hogyan használhatja az Application Insightsban kínált eszközöket az alkalmazások teljesítményének és stabilitásának javítására.
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 az objektumok élettartamát nem szabad feltételezni.
Egy ILoggerProvider a ILogger metódusán keresztül egy ILoggerProvider.CreateLogger-t hoz létre. 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
ILoggerFactoryvagyILoggingBuilderbő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.