Kako prijaviti podatke u prijavu događaja sustava Windows u C #

Operativni sustav Windows bilježi podatke u zapisnik događaja Windows kad god se pojavi problem. Te podatke možete pregledati pomoću alata Windows Event Viewer. Ovaj članak govori o tome kako programski možete raditi s Windowsovom evidencijom događaja u C #.

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 projekt aplikacije konzole .NET Core u Visual Studiju

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

  1. Pokrenite Visual Studio IDE.
  2. Kliknite "Stvori novi projekt".
  3. U prozoru "Stvori novi projekt" s popisa predložaka odaberite "Aplikacija konzole (.NET Core)".
  4. Kliknite Dalje.
  5. U sljedećem prozoru "Konfiguriranje novog projekta" navedite naziv i mjesto za novi projekt.
  6. Kliknite Stvori.

To će stvoriti novi projektni program konzole .NET Core u Visual Studio 2019. Ovaj ćemo projekt koristiti za rad s zapisnikom događaja sustava Windows u sljedećim odjeljcima ovog članka.

Instalirajte EventLog NuGet paket

Da biste mogli raditi s Windows Event Log u .NET Core aplikacijama, trebali biste instalirati paket Microsoft.Extensions.Logging.EventLog iz tvrtke NuGet. To možete učiniti putem NuGet Package Manager unutar IDE-a Visual Studio 2019 ili izvršavanjem sljedeće naredbe na konzoli NuGet Package Manager:

Instalacijski paket Microsoft.Extensions.Logging.EventLog

Stvorite instancu klase EventLog u C #

Da biste stvorili instancu klase EventLog i upisali unos u Windows zapisnik događaja, možete upotrijebiti sljedeći kôd:

EventLog eventLog = novi EventLog ();

eventLog.Source = "MyEventLogTarget";

eventLog.WriteEntry ("Ovo je testna poruka.", EventLogEntryType.Information);

Pišite u instancu EventLog u C #

Ako iz svoje aplikacije želite prijaviti podatke u ovu instancu EventLog, možete upotrijebiti sljedeći kod:

string message = "Ovo je probna poruka.";

pomoću (EventLog eventLog = novi EventLog ("Aplikacija"))

{

    eventLog.Source = "Prijava";

    eventLog.WriteEntry (poruka, EventLogEntryType.Information);

}

Brisanje instance EventLog u C #

Da biste očistili instancu EventLog, možete upotrijebiti sljedeći kôd:

EventLog eventLog = novi EventLog ();

eventLog.Source = "MyEventLogSource";

eventLog.Clear ();

Sljedeći isječak koda može se koristiti za brisanje dnevnika događaja.

if (EventLog.Exists ("MyEventLogTarget"))

{

   EventLog.Delete ("MyEventLogTarget");

}

Pročitajte unose EventLoga u C #

Sve unose u zapisnik možete pročitati pomoću dolje navedenog isječka koda:

EventLog eventLog = novi EventLog ();

eventLog.Log = "MyEventLogTarget";

foreach (unos EventLogEntry u eventLog.Entries)

   // Ovdje napišite svoj prilagođeni kôd

}

Koristite NLog za upisivanje podataka dnevnika u EventLog u C #

Sada ćemo iskoristiti paket NLog.WindowsEventLog. Ovaj će nam paket omogućiti upotrebu NLoga za slanje podataka dnevnika u EventLog dok radimo iz okruženja .NET Core.

NLog.WindowsEventLog obuhvaća zamršenosti povezivanja na EventLog i rada s EventLog iz ASP.NET Core. Jednostavno morate nazvati NLog metode kao i obično.

Budući da ćemo koristiti NLog za evidentiranje podataka na EventLog, dodajte sljedeći paket u svoj projekt:

Instalacijski paket NLog.WindowsEventLog

Stvorite sučelje za bilježenje u C #

Stvorite sljedeće sučelje za pohranu dnevnika kao informacija, upozorenja, ispravljanja pogrešaka ili pogreške.

javno sučelje ILogManager

    {

        void LogInformation (niz poruka);

        void LogWarning (niz poruka);

        void LogDebug (niz poruka);

        void LogError (niz poruka);

    }

Implementirajte klasu NLogManager u C #

Zatim stvorite klasu pod nazivom NLogManager koja proširuje sučelje ILogManager i implementira svaku od njegovih metoda.

javna klasa NLogManager: ILogManager

    {

        privatni statički NLog.ILogger logger =

LogManager.GetCurrentClassLogger ();

        javna void LogDebug (niz poruka)

        {

            baciti novi NotImplementedException ();

        }

        javna void LogError (niz poruka)

        {

            logger.Error (poruka);

        }

        javna nevažeća prijava podataka (string poruka)

        {

            baciti novi NotImplementedException ();

        }

        javna praznina LogWarning (niz poruka)

        {

            baciti novi NotImplementedException ();

        }

    }

Implementirajte metodu LogError u C #

Imajte na umu da ćemo radi jednostavnosti u ovom primjeru koristiti metodu LogError, a ostale metode klase NLogManager neće biti implementirane. Ajmo sada razumjeti kako možemo koristiti NLog za prijavu podataka u EventLog. Izmijenite metodu LogError klase NLogManager kako je prikazano dolje:

javna void LogError (niz poruka)

    {

        Logger logger = LogManager.GetLogger ("EventLogTarget");

        var logEventInfo = novi LogEventInfo (LogLevel.Error,

        logger.Name, poruka);

        logger.Log (logEventInfo);

    }

Imajte na umu da je EventLogTarget samo ime cilja dnevnika za EventLog, koji treba definirati u konfiguracijskoj datoteci nlog.config. Klasa LogEventInfo je vaš događaj dnevnika, tj. Predstavlja događaj dnevnika. Njegovom konstruktoru trebali biste proslijediti razinu dnevnika, ime zapisnika i poruku koju želite zabilježiti.

Konfigurirajte NLog za evidentiranje podataka u EventLog u C #

Da biste programski konfigurirali NLog za prijavu podataka u EventLog, možete upotrijebiti sljedeći kod:

var config = new NLog.Config.LoggingConfiguration ();

var logEventLog = novi NLog.Targets.EventLogTarget ("EventLogTarget");

config.AddRule (NLog.LogLevel.Info, NLog.LogLevel.Error, logEventLog);

NLog.LogManager.Configuration = config;

Kompletni primjer NLogManager u C #

Kompletni izvorni kod klase NLogManager dan je u nastavku za vašu referencu:

javna klasa NLogManager: ILogManager

    {

        privatni statički NLog.ILogger logger =

LogManager.GetCurrentClassLogger ();

        javna void LogDebug (niz poruka)

        {

            logger.Debug (poruka);

        }

javna void LogError (niz poruka)

        {

Logger logger = LogManager.GetLogger ("EventLogTarget");

var logEventInfo = novi LogEventInfo (LogLevel.Error,

logger.Name, poruka);

logger.Log (logEventInfo);

        }

        javna nevažeća prijava podataka (string poruka)

        {

            logger.Info (poruka);

        }

        javna praznina LogWarning (niz poruka)

        {

            logger.Warn (poruka);

        }

    }

Da biste iskoristili instancu NLogManager u kontrolerima, trebali biste je dodati u metodi ConfigureServices kako je prikazano u isječku koda koji je dan u nastavku.

usluge.AddSingleton ();

Kada pokrenete Windowsov preglednik događaja, možete vidjeti poruku pogreške prijavljenu tamo kao što je prikazano na snimci zaslona u nastavku.

Windowsov zapisnik događaja obično se koristi za bilježenje sistemskih događaja, mrežnog prometa i srodnih podataka kao što su sigurnost, izvedba itd. Možete koristiti Windowsov zapisnik događaja kao cilj dnevnika za pohranu podataka vaše aplikacije. Ako se vaša aplikacija izvodi samo na sustavu Windows, Windows zapisnik događaja dobra je opcija za spremanje podataka dnevnika događaja vaše aplikacije.

Kako učiniti više u C #:

  • Kako koristiti ArrayPool i MemoryPool u C #
  • Kako koristiti klasu pufer u C #
  • Kako koristiti HashSet u C #
  • Kako koristiti imenovane i neobavezne parametre u C #
  • Kako odrediti C # kod pomoću BenchmarkDotNet-a
  • Kako koristiti tečna sučelja i ulančavanje metoda u C #
  • Kako jedinica testirati statičke metode u C #
  • Kako refaktorirati Božje objekte u C #
  • Kako koristiti ValueTask u C #
  • Kako se koristi nepromjenjivost u C
  • Kako koristiti const, readonly i static u C #
  • Kako koristiti bilješke podataka u C #
  • Kako raditi s GUID-ovima u C # 8
  • Kada koristiti apstraktnu klasu naspram sučelja u C #
  • Kako raditi s AutoMapperom u C #
  • Kako koristiti lambda izraze u C #
  • Kako raditi s delegatima Action, Func i Predicate u C #
  • Kako raditi s delegatima u C #
  • Kako implementirati jednostavni zapisnik u C #
  • Kako raditi s atributima u C #
  • Kako raditi s log4netom na C #
  • Kako implementirati obrazac dizajna spremišta u C #
  • Kako raditi s refleksijom u C #
  • Kako raditi s nadzornikom datoteka u C #
  • Kako izvesti lijenu inicijalizaciju u C #
  • Kako raditi s MSMQ-om u C #
  • Kako raditi s metodama produženja u C #
  • Kako do nas lambda izrazi u C #
  • Kada upotrijebiti hlapljivu ključnu riječ u C #
  • Kako koristiti ključnu riječ yield u C #
  • Kako implementirati polimorfizam u C #
  • Kako izraditi vlastiti planer zadataka u C #
  • Kako raditi s RabbitMQ u C #
  • Kako raditi s korpicom u C #
  • Istraživanje virtualnih i apstraktnih metoda u C #
  • Kako koristiti Dapper ORM u C #
  • Kako koristiti uzorak dizajna muhe u C #