Megosztás a következőn keresztül:


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:

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:

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 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 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-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 LoggingEventSourcesegítségével.

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 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ó:

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:

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:

  1. NuGet-csomag hozzáadása a projekthez.
  2. A naplózási keretrendszer által biztosított ILoggerFactory vagy ILoggingBuilder 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: