Kako prijaviti podatke na SQL Server u ASP.NET Core

Zapisivanje je bitna značajka svake aplikacije, jer je potrebno za otkrivanje, istraživanje i otklanjanje pogrešaka. Serilog je biblioteka otvorenog koda treće strane koja programerima .NET omogućuje prijavljivanje strukturiranih podataka na konzolu, datoteke i nekoliko drugih vrsta spremišta podataka. Možete saznati više o Serilogu iz mog ranijeg posta ovdje. 

Ovaj članak raspravlja o tome kako možemo koristiti Serilog za bilježenje strukturiranih podataka u bazu podataka SQL Server. Da biste radili s primjerima koda iz ovog članka, u sustavu biste trebali instalirati Visual Studio 2019. Ako još nemate kopiju, ovdje možete preuzeti Visual Studio 2019. 

Stvorite ASP.NET Core 3.0 API projekt

Prvo, kreirajmo ASP.NET Core projekt u Visual Studiju. Pod pretpostavkom da je Visual Studio 2019 instaliran u vašem sustavu, slijedite korake opisane u nastavku da biste u Visual Studiou stvorili novi ASP.NET Core projekt.

  1. Pokrenite Visual Studio IDE.
  2. Kliknite "Stvori novi projekt".
  3. U prozoru "Stvori novi projekt" s popisa predložaka odaberite "ASP.Net Core Web Application".
  4. Kliknite Dalje.
  5. U sljedećem prozoru "Konfiguriranje novog projekta" navedite naziv i mjesto za novi projekt.
  6. Kliknite Stvori.
  7. U prozoru "Stvori novu web-aplikaciju ASP.Net Core" odaberite .NET Core kao vrijeme izvođenja i ASP.NET Core 2.2 (ili noviju) s padajućeg popisa na vrhu. Ovdje ću koristiti ASP.NET Core 3.0.
  8. Odaberite "API" kao predložak projekta da biste stvorili novu aplikaciju ASP.NET Core API. 
  9. Obavezno označite potvrdne okvire "Omogući podršku za Docker" i "Konfiguriraj za HTTPS" jer ovdje nećemo koristiti te značajke.
  10. Provjerite je li provjera autentičnosti postavljena na "Bez provjere autentičnosti" jer ni mi nećemo koristiti provjeru autentičnosti.
  11. Kliknite Stvori.

To će stvoriti novi ASP.NET Core API projekt u Visual Studiju. Odaberite mapu rješenja Controllers u prozoru Solution Explorer i kliknite "Dodaj -> Controller ..." da biste stvorili novi kontroler nazvan DefaultController. Ovaj projekt koristit ćemo u sljedećim odjeljcima ovog članka.

Instalirajte NuGet pakete za Serilog

Da biste radili sa Serilogom, trebali biste instalirati pakete Serilog iz NuGet-a. To možete učiniti putem upravitelja paketa NuGet unutar IDE-a Visual Studio 2019 ili izvršavanjem sljedećih naredbi na konzoli upravitelja paketa NuGet:

Instalirajte-paket Serilog

Instalirajte-paket Serilog.AspNetCore

Instaliraj-paket Serilog.Sinks.MSSqlServer

Instaliraj-paket Serilog.Settings.Configuration

Inicijalizirajte Serilog u Program.cs u ASP.NET Core

Sljedeći isječak koda ilustrira kako možete uključiti Serilog u ASP.NET Core. Imajte na umu kako je metoda produženja UseSerilog () korištena za postavljanje Seriloga kao davatelja usluge bilježenja.

javni statički IWebHost BuildWebHost (string [] args) =>

            WebHost.CreateDefaultBuilder (argumenti)

                   .UseStartup ()

                   .UseSerilog ()

                   .Izgraditi();

Izgradite primjer web domaćina u ASP.NET Core

Naravno, trebat će nam aplikacija koja će ilustrirati upotrebu Seriloga. Evo cjelovitog izvornog koda klase Program za našu primjernu aplikaciju. Imajte na umu kako smo konfigurirali i izgradili web host.

    program javne klase

    {

        javna statička praznina Main (string [] args)

        {

            IConfigurationRoot konfiguracija = novo

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

            nije obavezno: false, reloadOnChange: true) .Build ();

            Log.Logger = nova LoggerConfiguration (). ReadFrom.Configuration

            (konfiguracija) .CreateLogger ();

            BuildWebHost (args) .Run ();

        }

        javni statički IWebHost BuildWebHost (string [] args) =>

            WebHost.CreateDefaultBuilder (argumenti)

                .UseStartup ()

                .UseSerilog ()

                .Izgraditi();

    }

Ne zaboravite u svoj program uključiti prostor imena Serilog, kao što je prikazano dolje:

pomoću Seriloga;

Konfigurirajte postavke veze baze podataka u ASP.NET Core

Kada izradite novi ASP.NET Core projekt u Visual Studiju, datoteka appsettings.json kreira se prema zadanim postavkama. Ovdje možete odrediti niz veze baze podataka i druge informacije o konfiguraciji. Otvorite datoteku appsettings.json iz projekta koji smo ranije kreirali i unesite sljedeće podatke:

{

  "Serilog": {

    "MinimumLevel": "Informacije",

    "WriteTo": [

      {

        "Name": "MSSqlServer",

        "Args": {

          "connectionString": "Izvor podataka = LAPTOP-ULJMOJQ5; Inicijalno

           Katalog = Istraživanje;    

     Korisnički ID = joydip; Lozinka = sa123 #; ",

          "tableName": "Dnevnik",

          "autoCreateSqlTable": istina

        }

      }

    ]

  }

}

Stvorite tablicu baze podataka za zapis podataka u SQL Server

Možda biste i sami željeli stvoriti tablicu dnevnika. Ispod je skripta koju možete koristiti za stvaranje tablice dnevnika u bazi podataka SQL Server.

STVORI TABELU [Dnevnik] (

   [Id] int IDENTITET (1,1) NIJE NULL,

   [Poruka] nvarchar (max) NULL,

   [MessageTemplate] nvarchar (max) NULL,

   [Razina] nvarchar (maks.) NULL,

   [TimeStamp] datum i vrijeme pomak (7) NIJE NULL,

   [Iznimka] nvarchar (max) NULL,

   [Svojstva] nvarchar (max) NULL

   OGRANIČENJE [PK_Log]

     PRIMARNI KLJUČ KLASERIRAN ([Id] ASC)

)

Kada pokrenete aplikaciju, stvorit će se nova tablica pod nazivom Dnevnik i tamo će se zabilježiti događaji pokretanja ASP.NET Core. Slika 1 u nastavku prikazuje podatke koji su zabilježeni unutar tablice Dnevnik.

Zabilježite podatke u akcijskim metodama u ASP.NET Core

Možete iskoristiti injekciju ovisnosti za ubrizgavanje instance zapisnika u svoj kontroler kao što je prikazano u isječku koda u nastavku:

javna klasa DefaultController: Controller

{

   privatno samo za čitanje ILogger _logger;

   javni DefaultController (zapisivač ILogger)

   {

      _logger = zapisničar;

   }

}

Sljedeći isječak koda ilustrira kako možete iskoristiti Serilog u metodama radnji vašeg kontrolera za bilježenje podataka.

javna klasa DefaultController: Controller

    {

        privatno samo za čitanje ILogger _logger;

        javni DefaultController (zapisivač ILogger)

        {

            _logger = zapisničar;

        }

        javni indeks IActionResult ()

        {

            _logger.LogInformation ("Pozdrav svijetu");

            povratak View ();

        }

    }

Iako neovisan o .NET Core, Serilog se lijepo uključuje u ekosustav ASP.NET Core, čineći strukturirano bilježenje jednostavnim i praktičnim. Serilog također koristi desetke sudopera za slanje zapisnika na mnoge različite ciljeve zapisivanja, od tekstualnih datoteka do baza podataka do usluga AWS, Azure i Google Cloud. U ovom sam postu pokazao kako možemo raditi sa sudoperom Microsoft SQL Server. O ostalim naprednim značajkama Seriloga razgovarat ću u sljedećem postu ovdje.