Cara memasukkan data ke SQL Server di ASP.NET Core

Pencatatan adalah fitur penting untuk aplikasi apa pun, karena diperlukan untuk mendeteksi, menyelidiki, dan men-debug masalah. Serilog adalah pustaka sumber terbuka pihak ketiga yang memungkinkan pengembang .NET untuk mencatat data terstruktur ke konsol, ke file, dan ke beberapa jenis penyimpanan data lainnya. Anda dapat mempelajari lebih lanjut tentang Serilog dari posting saya sebelumnya di sini. 

Artikel ini membahas bagaimana kita dapat menggunakan Serilog untuk mencatat data terstruktur ke database SQL Server. Untuk bekerja dengan contoh kode yang disediakan dalam artikel ini, Anda harus menginstal Visual Studio 2019 di sistem Anda. Jika Anda belum memiliki salinannya, Anda dapat mengunduh Visual Studio 2019 di sini. 

Buat proyek API ASP.NET Core 3.0

Pertama, mari buat proyek ASP.NET Core di Visual Studio. Dengan asumsi Visual Studio 2019 diinstal di sistem Anda, ikuti langkah-langkah yang diuraikan di bawah ini untuk membuat proyek ASP.NET Core baru di Visual Studio.

  1. Luncurkan Visual Studio IDE.
  2. Klik "Buat proyek baru".
  3. Di jendela "Buat proyek baru", pilih "Aplikasi Web Inti ASP.Net" dari daftar templat yang ditampilkan.
  4. Klik Next.
  5. Di jendela "Configure your new project" yang ditampilkan berikutnya, tentukan nama dan lokasi untuk proyek baru tersebut.
  6. Klik Buat.
  7. Di jendela "Buat Aplikasi Web ASP.Net Core Baru", pilih .NET Core sebagai runtime dan ASP.NET Core 2.2 (atau yang lebih baru) dari daftar drop-down di bagian atas. Saya akan menggunakan ASP.NET Core 3.0 di sini.
  8. Pilih "API" sebagai template proyek untuk membuat aplikasi ASP.NET Core API baru. 
  9. Pastikan kotak centang "Aktifkan Dukungan Docker" dan "Konfigurasi untuk HTTPS" tidak dicentang karena kami tidak akan menggunakan fitur tersebut di sini.
  10. Pastikan Autentikasi disetel sebagai "Tanpa Autentikasi" karena kami juga tidak akan menggunakan autentikasi.
  11. Klik Buat.

Ini akan membuat proyek ASP.NET Core API baru di Visual Studio. Pilih folder solusi Controllers di jendela Solution Explorer dan klik “Add -> Controller…” untuk membuat controller baru bernama DefaultController. Kami akan menggunakan proyek ini di bagian selanjutnya dari artikel ini.

Instal paket NuGet untuk Serilog

Untuk bekerja dengan Serilog, Anda harus menginstal paket Serilog dari NuGet. Anda dapat melakukan ini baik melalui manajer paket NuGet di dalam Visual Studio 2019 IDE, atau dengan menjalankan perintah berikut di konsol manajer paket NuGet:

Instal-Paket Serilog

Instal-Paket Serilog.AspNetCore

Instal-Paket Serilog.Sinks.MSSqlServer

Instal-Paket Serilog.Settings.Configuration

Inisialisasi Serilog di Program.cs di ASP.NET Core

Potongan kode berikut menggambarkan bagaimana Anda dapat menyambungkan Serilog ke ASP.NET Core. Perhatikan bagaimana metode ekstensi UseSerilog () telah digunakan untuk menyetel Serilog sebagai penyedia logging.

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

            WebHost.CreateDefaultBuilder (args)

                   .UseStartup ()

                   .UseSerilog ()

                   .Membangun();

Buat contoh host web di ASP.NET Core

Secara alami, kita membutuhkan aplikasi untuk menggambarkan penggunaan Serilog. Berikut adalah kode sumber lengkap dari kelas Program untuk aplikasi contoh kita. Perhatikan bagaimana kami telah mengonfigurasi dan membangun host web.

    Program kelas umum

    {

        public static void Main (string [] args)

        {

            Konfigurasi IConfigurationRoot = baru

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

            opsional: false, reloadOnChange: true) .Build ();

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

            (konfigurasi) .CreateLogger ();

            BuildWebHost (args) .Run ();

        }

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

            WebHost.CreateDefaultBuilder (args)

                .UseStartup ()

                .UseSerilog ()

                .Membangun();

    }

Ingatlah untuk memasukkan namespace Serilog dalam program Anda seperti yang ditunjukkan di bawah ini:

menggunakan Serilog;

Konfigurasikan pengaturan koneksi database di ASP.NET Core

Ketika Anda membuat proyek ASP.NET Core baru di Visual Studio, file appsettings.json dibuat secara default. Di sinilah Anda dapat menentukan string koneksi database dan informasi konfigurasi lainnya. Buka file appsettings.json dari proyek yang kita buat sebelumnya dan masukkan informasi berikut:

{

  "Serilog": {

    "MinimumLevel": "Informasi",

    "WriteTo": [

      {

        "Nama": "MSSqlServer",

        "Args": {

          "connectionString": "Sumber Data = LAPTOP-ULJMOJQ5; Awal

           Katalog = Penelitian;    

     ID Pengguna = joydip; Kata sandi = sa123 #; ",

          "tableName": "Log",

          "autoCreateSqlTable": benar

        }

      }

    ]

  }

}

Buat tabel database untuk mencatat data di SQL Server

Anda mungkin juga ingin membuat tabel log sendiri. Di bawah ini adalah skrip yang dapat Anda gunakan untuk membuat tabel log di database SQL Server.

BUAT TABEL [Log] (

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

   [Pesan] nvarchar (max) NULL,

   [MessageTemplate] nvarchar (maks) NULL,

   [Level] nvarchar (maks) NULL,

   [TimeStamp] datetimeoffset (7) BUKAN NULL,

   [Pengecualian] nvarchar (max) NULL,

   [Properti] nvarchar (maks) NULL

   BATAS [PK_Log]

     KUNCI UTAMA DIKLUSTER ([Id] ASC)

)

Ketika Anda menjalankan aplikasi, tabel baru bernama Log akan dibuat dan acara startup ASP.NET Core akan dicatat di sana. Gambar 1 di bawah ini menunjukkan data yang telah login di dalam tabel Log.

Data log dalam metode tindakan di ASP.NET Core

Anda dapat memanfaatkan injeksi ketergantungan untuk memasukkan instance logger di pengontrol Anda seperti yang ditunjukkan dalam cuplikan kode di bawah ini:

kelas publik DefaultController: Controller

{

   pribadi hanya baca ILogger _logger;

   public DefaultController (ILogger logger)

   {

      _logger = logger;

   }

}

Cuplikan kode berikut menggambarkan bagaimana Anda dapat memanfaatkan Serilog dalam metode tindakan pengontrol Anda untuk mencatat data.

kelas publik DefaultController: Controller

    {

        pribadi hanya baca ILogger _logger;

        public DefaultController (ILogger logger)

        {

            _logger = logger;

        }

        Indeks IActionResult publik ()

        {

            _logger.LogInformation ("Halo Dunia");

            kembali View ();

        }

    }

Meskipun tidak bergantung pada .NET Core, Serilog terhubung dengan baik ke ekosistem ASP.NET Core, membuat logging terstruktur menjadi mudah dan nyaman. Serilog juga memanfaatkan lusinan sink untuk mengirim log ke berbagai target logging mulai dari file teks hingga database hingga layanan AWS, Azure, dan Google Cloud. Dalam posting ini, saya telah mendemonstrasikan bagaimana kita dapat bekerja dengan sink Microsoft SQL Server. Saya akan membahas fitur-fitur canggih Serilog lainnya di posting mendatang di sini.