Προγραμματισμός

Τρόπος καταγραφής δεδομένων σε SQL Server στον πυρήνα ASP.NET

Η καταγραφή είναι βασική δυνατότητα για οποιαδήποτε εφαρμογή, καθώς είναι απαραίτητη για τον εντοπισμό, τη διερεύνηση και τον εντοπισμό σφαλμάτων. Το Serilog είναι μια βιβλιοθήκη ανοιχτού κώδικα τρίτου μέρους που επιτρέπει στους προγραμματιστές .NET να καταγράφουν δομημένα δεδομένα στην κονσόλα, σε αρχεία και σε πολλά άλλα είδη καταστημάτων δεδομένων. Μπορείτε να μάθετε περισσότερα για το Serilog από την προηγούμενη ανάρτησή μου εδώ.

Αυτό το άρθρο περιγράφει τον τρόπο με τον οποίο μπορούμε να χρησιμοποιήσουμε το Serilog για την καταγραφή δομημένων δεδομένων σε μια βάση δεδομένων SQL Server. Για να εργαστείτε με τα παραδείγματα κώδικα που παρέχονται σε αυτό το άρθρο, θα πρέπει να έχετε εγκαταστήσει το Visual Studio 2019 στο σύστημά σας. Εάν δεν έχετε ήδη αντίγραφο, μπορείτε να κατεβάσετε το Visual Studio 2019 εδώ.

Δημιουργήστε ένα έργο ASP.NET Core 3.0 API

Πρώτα απ 'όλα, ας δημιουργήσουμε ένα έργο ASP.NET Core στο Visual Studio. Ας υποθέσουμε ότι το Visual Studio 2019 είναι εγκατεστημένο στο σύστημά σας, ακολουθήστε τα βήματα που περιγράφονται παρακάτω για να δημιουργήσετε ένα νέο έργο ASP.NET Core στο Visual Studio.

  1. Εκκινήστε το Visual Studio IDE.
  2. Κάντε κλικ στο "Δημιουργία νέου έργου".
  3. Στο παράθυρο "Δημιουργία νέου έργου", επιλέξτε "ASP.Net Core Web Application" από τη λίστα των προτύπων που εμφανίζονται.
  4. Κάντε κλικ στο Επόμενο.
  5. Στο παράθυρο "Διαμόρφωση του νέου έργου" που εμφανίζεται στη συνέχεια, καθορίστε το όνομα και την τοποθεσία για το νέο έργο.
  6. Κάντε κλικ στο Δημιουργία.
  7. Στο παράθυρο "Δημιουργία νέας εφαρμογής Web ASP.Net Core", επιλέξτε .NET Core ως χρόνο εκτέλεσης και ASP.NET Core 2.2 (ή μεταγενέστερη έκδοση) από την αναπτυσσόμενη λίστα στην κορυφή. Θα χρησιμοποιήσω το ASP.NET Core 3.0 εδώ.
  8. Επιλέξτε "API" ως πρότυπο έργου για να δημιουργήσετε μια νέα εφαρμογή ASP.NET Core API.
  9. Βεβαιωθείτε ότι τα πλαίσια ελέγχου "Ενεργοποίηση υποστήριξης Docker" και "Διαμόρφωση για HTTPS" δεν είναι επιλεγμένα, καθώς δεν θα χρησιμοποιούμε αυτές τις δυνατότητες εδώ.
  10. Βεβαιωθείτε ότι ο Έλεγχος ταυτότητας έχει οριστεί ως "Χωρίς έλεγχο ταυτότητας", καθώς ούτε θα χρησιμοποιούμε έλεγχο ταυτότητας.
  11. Κάντε κλικ στο Δημιουργία.

Αυτό θα δημιουργήσει ένα νέο έργο ASP.NET Core API στο Visual Studio. Επιλέξτε το φάκελο Controllers solution στο παράθυρο Solution Explorer και κάντε κλικ στο "Add -> Controller ..." για να δημιουργήσετε ένα νέο χειριστήριο με το όνομα DefaultController. Θα χρησιμοποιήσουμε αυτό το έργο στις επόμενες ενότητες αυτού του άρθρου.

Εγκαταστήστε τα πακέτα NuGet για το Serilog

Για να εργαστείτε με το Serilog, πρέπει να εγκαταστήσετε τα πακέτα Serilog από το NuGet. Μπορείτε να το κάνετε είτε μέσω του διαχειριστή πακέτων NuGet μέσα στο Visual Studio 2019 IDE είτε εκτελώντας τις ακόλουθες εντολές στην κονσόλα διαχειριστή πακέτων NuGet:

Εγκατάσταση πακέτου Serilog

Εγκατάσταση-πακέτο Serilog.AspNetCore

Εγκατάσταση-πακέτο Serilog.Sinks.MSSqlServer

Install-Package Serilog.Settings.Configuration

Αρχικοποιήστε το Serilog στο Program.cs στο ASP.NET Core

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να συνδέσετε το Serilog στο ASP.NET Core. Σημειώστε πώς χρησιμοποιήθηκε η μέθοδος επέκτασης UseSerilog () για να ορίσετε το Serilog ως πάροχο καταγραφής.

δημόσιο στατικό IWebHost BuildWebHost (string [] args) =>

WebHost.CreateDefaultBuilder (args)

. ΧρήσηStartup ()

. Χρησιμοποιήστε το Serilog ()

.Χτίζω();

Δημιουργήστε ένα παράδειγμα web host στο ASP.NET Core

Φυσικά, θα χρειαστούμε μια εφαρμογή για να δείξουμε τη χρήση του Serilog. Εδώ είναι ο πλήρης πηγαίος κώδικας της κλάσης Προγράμματος για την εφαρμογή παραδείγματος. Σημειώστε πώς διαμορφώσαμε και δημιουργήσαμε τον κεντρικό υπολογιστή ιστού.

   Πρόγραμμα δημόσιας τάξης

    {

δημόσιο στατικό κενό Κεντρικό (string [] args)

        {

IConfigurationRoot διαμόρφωση = νέο

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

προαιρετικό: false, reloadOnChange: true). Build ();

Log.Logger = νέο LoggerConfiguration (). ReadFrom.Configuration

(διαμόρφωση) .CreateLogger ();

BuildWebHost (args). Εκτελέστε ();

        }

δημόσιο στατικό IWebHost BuildWebHost (string [] args) =>

WebHost.CreateDefaultBuilder (args)

. ΧρήσηStartup ()

. Χρησιμοποιήστε το Serilog ()

.Χτίζω();

    }

Θυμηθείτε να συμπεριλάβετε το χώρο ονομάτων Serilog στο πρόγραμμά σας όπως φαίνεται παρακάτω:

χρησιμοποιώντας το Serilog;

Διαμορφώστε τις ρυθμίσεις σύνδεσης βάσης δεδομένων στο ASP.NET Core

Όταν δημιουργείτε ένα νέο έργο ASP.NET Core στο Visual Studio, το αρχείο appsettings.json δημιουργείται από προεπιλογή. Εδώ μπορείτε να καθορίσετε τη συμβολοσειρά σύνδεσης βάσης δεδομένων και άλλες πληροφορίες διαμόρφωσης. Ανοίξτε το αρχείο appsettings.json από το έργο που δημιουργήσαμε νωρίτερα και εισαγάγετε τις ακόλουθες πληροφορίες:

{

"Serilog": {

"MinimumLevel": "Πληροφορίες",

"Γράψε σε": [

      {

"Όνομα": "MSSqlServer",

"Επιχειρήματα": {

"connectionString": "Πηγή δεδομένων = LAPTOP-ULJMOJQ5; Αρχικό

Κατάλογος = Έρευνα;

Αναγνωριστικό χρήστη = joydip; Κωδικός πρόσβασης = sa123 #; ",

"tableName": "Log",

"autoCreateSqlTable": true

        }

      }

    ]

  }

}

Δημιουργήστε έναν πίνακα βάσης δεδομένων για να καταγράψετε δεδομένα στον SQL Server

Ίσως θέλετε να δημιουργήσετε και εσείς τον πίνακα καταγραφής. Ακολουθεί το σενάριο που μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε έναν πίνακα καταγραφής στη βάση δεδομένων του SQL Server.

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ [Log] (

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

[Μήνυμα] nvarchar (μέγ.) NULL,

[MessageTemplate] nvarchar (μέγ.) NULL,

[Επίπεδο] nvarchar (μέγ.) NULL,

[TimeStamp] datetimeoffset (7) ΔΕΝ NULL,

[Εξαίρεση] nvarchar (μέγ.) NULL,

[Properties] nvarchar (max) NULL

CONSTRAINT [PK_Log]

ΠΡΩΤΟΒΟΥΛΙΟ ΚΛΕΙΔΩΜΕΝΟ ([Id] ASC)

)

Όταν εκτελείτε την εφαρμογή, θα δημιουργηθεί ένας νέος πίνακας με το όνομα Log και τα συμβάντα εκκίνησης ASP.NET Core θα καταγραφούν εκεί. Το σχήμα 1 παρακάτω δείχνει τα δεδομένα που έχουν καταγραφεί στον πίνακα καταγραφής.

Καταγράψτε τα δεδομένα σε μεθόδους δράσης στο ASP.NET Core

Μπορείτε να αξιοποιήσετε την εξάρτηση εξάρτησης για να εισαγάγετε μια παρουσία καταγραφής στον ελεγκτή σας, όπως φαίνεται στο παρακάτω απόσπασμα κώδικα:

δημόσια τάξη DefaultController: Controller

{

ιδιωτικό αναγνωστικό ILOGger _logger;

δημόσιο DefaultController (ILogger logger)

   {

_logger = καταγραφέας;

   }

}

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να εκμεταλλευτείτε το Serilog στις μεθόδους δράσης του ελεγκτή σας για την καταγραφή δεδομένων.

δημόσια τάξη DefaultController: Controller

    {

ιδιωτικό αναγνωστικό ILOGger _logger;

δημόσιο DefaultController (ILogger logger)

        {

_logger = καταγραφέας;

        }

δημόσιος δείκτης IActionResult ()

        {

_logger.LogInformation ("Hello World");

Επιστροφή Προβολή ();

        }

    }

Αν και ανεξάρτητα από το .NET Core, το Serilog συνδέεται όμορφα στο οικοσύστημα ASP.NET Core, καθιστώντας τη δομημένη καταγραφή εύκολη και βολική. Το Serilog εκμεταλλεύεται επίσης δεκάδες νεροχύτες για να στείλει τα αρχεία καταγραφής σε πολλούς διαφορετικούς στόχους καταγραφής, από αρχεία κειμένου έως βάσεις δεδομένων έως υπηρεσίες AWS, Azure και Google Cloud. Σε αυτήν την ανάρτηση, έχω δείξει πώς μπορούμε να εργαστούμε με το νεροχύτη του Microsoft SQL Server. Θα συζητήσω άλλες προηγμένες δυνατότητες του Serilog σε μια μελλοντική ανάρτηση εδώ.

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