Programování

Jak protokolovat data na SQL Server v ASP.NET Core

Protokolování je základní funkcí pro jakoukoli aplikaci, protože je nezbytné pro detekci, vyšetřování a ladění problémů. Serilog je knihovna třetích stran s otevřeným zdrojovým kódem, která vývojářům .NET umožňuje protokolovat strukturovaná data do konzoly, do souborů a do několika dalších druhů datových úložišť. Více o Serilogu se můžete dozvědět z mého dřívějšího příspěvku zde.

Tento článek popisuje, jak můžeme použít Serilog k protokolování strukturovaných dat do databáze SQL Server. Chcete-li pracovat s příklady kódu uvedenými v tomto článku, měli byste mít ve svém systému nainstalovanou Visual Studio 2019. Pokud ještě nemáte kopii, můžete si stáhnout Visual Studio 2019 zde.

Vytvořte projekt API ASP.NET Core 3.0

Nejprve si vytvořme projekt ASP.NET Core v sadě Visual Studio. Za předpokladu, že je ve vašem systému nainstalovaná sada Visual Studio 2019, postupujte podle níže uvedených kroků a vytvořte nový projekt ASP.NET Core v sadě Visual Studio.

  1. Spusťte Visual Studio IDE.
  2. Klikněte na „Vytvořit nový projekt“.
  3. V okně „Vytvořit nový projekt“ vyberte ze zobrazeného seznamu šablon „Webová aplikace ASP.Net Core“.
  4. Klikněte na Další.
  5. V dalším okně „Konfigurace nového projektu“ zadejte název a umístění nového projektu.
  6. Klikněte na Vytvořit.
  7. V okně „Vytvořit novou webovou aplikaci ASP.Net Core“ vyberte v rozevíracím seznamu nahoře jako běhové prostředí .NET Core a ASP.NET Core 2.2 (nebo novější). Budu zde používat ASP.NET Core 3.0.
  8. Vyberte „API“ jako šablonu projektu a vytvořte novou aplikaci API ASP.NET Core.
  9. Ujistěte se, že políčka „Povolit podporu Dockeru“ a „Konfigurovat pro HTTPS“ nejsou zaškrtnuta, protože zde tyto funkce nebudeme používat.
  10. Ujistěte se, že je ověřování nastaveno na „Žádné ověřování“, protože také nebudeme používat ověřování.
  11. Klikněte na Vytvořit.

Tím se vytvoří nový projekt rozhraní API ASP.NET Core v sadě Visual Studio. Vyberte složku řešení Controllers v okně Solution Explorer a kliknutím na „Přidat -> Controller ...“ vytvořte nový řadič s názvem DefaultController. Tento projekt použijeme v následujících částech tohoto článku.

Nainstalujte balíčky NuGet pro Serilog

Chcete-li pracovat se Serilogem, měli byste nainstalovat balíčky Serilog z NuGet. Můžete to udělat buď prostřednictvím správce balíčků NuGet uvnitř IDE sady Visual Studio 2019, nebo provedením následujících příkazů v konzole správce balíčků NuGet:

Instalační balíček Serilog

Instalovat balíček Serilog.AspNetCore

Instalační balíček Serilog.Sinks.MSSqlServer

Instalační balíček Serilog.Settings.Configuration

Inicializovat Serilog v Program.cs v ASP.NET Core

Následující fragment kódu ukazuje, jak můžete Serilog zapojit do ASP.NET Core. Všimněte si, jak byla k nastavení Serilogu jako poskytovatele protokolování použita metoda rozšíření UseSerilog ().

public static IWebHost BuildWebHost (string [] args) =>

WebHost.CreateDefaultBuilder (args)

.UseStartup ()

.UseSerilog ()

.Stavět();

Vytvořte příklad webového hostitele v ASP.NET Core

Přirozeně budeme potřebovat aplikaci, která ilustruje použití Serilogu. Zde je kompletní zdrojový kód třídy Program pro naši ukázkovou aplikaci. Všimněte si, jak jsme webového hostitele nakonfigurovali a vytvořili.

   program veřejné třídy

    {

public static void Main (řetězec [] args)

        {

Konfigurace IConfigurationRoot = nová

ConfigurationBuilder (). AddJsonFile ("appsettings.json",

volitelně: false, reloadOnChange: true) .Build ();

Log.Logger = nový LoggerConfiguration (). ReadFrom.Configuration

(konfigurace) .CreateLogger ();

BuildWebHost (args) .Run ();

        }

public static IWebHost BuildWebHost (string [] args) =>

WebHost.CreateDefaultBuilder (args)

.UseStartup ()

.UseSerilog ()

.Stavět();

    }

Nezapomeňte do svého programu zahrnout jmenný prostor Serilog, jak je znázorněno níže:

pomocí Serilogu;

Nakonfigurujte nastavení připojení k databázi v ASP.NET Core

Když vytvoříte nový projekt ASP.NET Core v sadě Visual Studio, ve výchozím nastavení se vytvoří soubor appsettings.json. Zde můžete určit řetězec připojení k databázi a další informace o konfiguraci. Otevřete soubor appsettings.json z projektu, který jsme vytvořili dříve, a zadejte následující informace:

{

"Serilog": {

"MinimumLevel": "Informace",

"Napsat": [

      {

"Name": "MSSqlServer",

"Args": {

"connectionString": "Zdroj dat = LAPTOP-ULJMOJQ5; počáteční

Katalog = Výzkum;

ID uživatele = joydip; Heslo = sa123 #; ",

"tableName": "Log",

"autoCreateSqlTable": true

        }

      }

    ]

  }

}

Vytvořte databázovou tabulku pro protokolování dat na serveru SQL Server

Možná budete chtít vytvořit tabulku protokolů také sami. Níže je skript, který můžete použít k vytvoření tabulky protokolu v databázi serveru SQL.

VYTVOŘIT TABULKU [Protokol] (

[Id] int IDENTITY (1,1) NOT NULL,

[Zpráva] nvarchar (max) NULL,

[MessageTemplate] nvarchar (max) NULL,

[Úroveň] nvarchar (max) NULL,

[TimeStamp] datetimeoffset (7) NOT NULL,

[Výjimka] nvarchar (max) NULL,

[Vlastnosti] nvarchar (max) NULL

OMEZENÍ [PK_Log]

PRIMARY KEY CLUSTERED ([Id] ASC)

)

Při spuštění aplikace se vytvoří nová tabulka s názvem Log a budou se tam protokolovat spouštěcí události ASP.NET Core. Obrázek 1 níže ukazuje data, která byla zaznamenána uvnitř tabulky protokolu.

Přihlaste se k datům v metodách akce v ASP.NET Core

Můžete využít injekci závislostí k vložení instance loggeru do vašeho řadiče, jak je znázorněno v úryvku kódu níže:

veřejná třída DefaultController: Controller

{

soukromé jen pro čtení ILogger _logger;

public DefaultController (ILogger logger)

   {

_logger = záznamník;

   }

}

Následující fragment kódu ilustruje, jak můžete využít výhody Serilogu v akčních metodách vašeho řadiče k protokolování dat.

veřejná třída DefaultController: Controller

    {

soukromé jen pro čtení ILogger _logger;

public DefaultController (ILogger logger)

        {

_logger = záznamník;

        }

veřejný index IActionResult ()

        {

_logger.LogInformation ("Hello World");

návrat View ();

        }

    }

Ačkoli je nezávislý na .NET Core, Serilog se pěkně zapojuje do ekosystému ASP.NET Core, takže je strukturované protokolování snadné a pohodlné. Serilog také využívá desítky umyvadel k odesílání protokolů k mnoha různým cílům protokolování, od textových souborů přes databáze po služby AWS, Azure a Google Cloud. V tomto příspěvku jsem demonstroval, jak můžeme pracovat s umyvadlem Microsoft SQL Server. O dalších pokročilých funkcích Serilogu pojednám v budoucím příspěvku zde.

$config[zx-auto] not found$config[zx-overlay] not found