Programiranje

Kako prijaviti podatke v dnevnik dogodkov sistema Windows v C #

Operacijski sistem Windows beleži podatke v dnevnik dogodkov Windows, kadar koli pride do težave. Te podatke si lahko ogledate z orodjem Windows Event Viewer. V tem članku je razloženo, kako lahko programsko delate z dnevnikom dogodkov sistema Windows v C #.

Če želite delati s primeri kod v tem članku, morate imeti v sistemu nameščen Visual Studio 2019. Če kopije še nimate, lahko Visual Studio 2019 prenesete tukaj.

Ustvarite projektni program konzole .NET Core v Visual Studio

Najprej ustvarimo aplikacijski projekt konzole .NET Core v Visual Studio. Ob predpostavki, da je Visual Studio 2019 nameščen v vašem sistemu, sledite spodnjim korakom, da ustvarite nov aplikacijski projekt konzole .NET Core v Visual Studio.

  1. Zaženite Visual Studio IDE.
  2. Kliknite »Ustvari nov projekt«.
  3. V oknu »Ustvari nov projekt« na seznamu predlog izberite »Console App (.NET Core)«.
  4. Kliknite Naprej.
  5. V naslednjem oknu »Konfiguriranje novega projekta« določite ime in mesto novega projekta.
  6. Kliknite Ustvari.

S tem boste ustvarili nov aplikacijski projekt konzole .NET Core v Visual Studio 2019. Ta projekt bomo uporabili za delo z dnevnikom dogodkov sistema Windows v naslednjih odsekih tega članka.

Namestite paket EventLog NuGet

Če želite delati s programom Windows Event Log v aplikacijah .NET Core, namestite paket Microsoft.Extensions.Logging.EventLog podjetja NuGet. To lahko storite prek upravitelja paketov NuGet znotraj IDE Visual Studio 2019 ali tako, da v konzoli upravitelja paketov NuGet izvedete naslednji ukaz:

Install-Package Microsoft.Extensions.Logging.EventLog

Ustvarite primerek razreda EventLog v jeziku C #

Če želite ustvariti primerek razreda EventLog in zapisati vnos v dnevnik dogodkov sistema Windows, lahko uporabite naslednjo kodo:

EventLog eventLog = nov EventLog ();

eventLog.Source = "MyEventLogTarget";

eventLog.WriteEntry ("To je testno sporočilo.", EventLogEntryType.Information);

Zapiši v primerek EventLog v C #

Če želite podatke iz tega programa prijaviti v ta primerek EventLog, lahko uporabite naslednjo kodo:

string message = "To je testno sporočilo.";

z uporabo (EventLog eventLog = new EventLog ("Application"))

{

eventLog.Source = "Aplikacija";

eventLog.WriteEntry (sporočilo, EventLogEntryType.Information);

}

Počistite primerek EventLog v jeziku C #

Če želite počistiti primerek EventLog, lahko uporabite naslednjo kodo:

EventLog eventLog = nov EventLog ();

eventLog.Source = "MyEventLogSource";

eventLog.Clear ();

Naslednji delček kode lahko uporabite za brisanje dnevnika dogodkov.

if (EventLog.Exists ("MyEventLogTarget"))

{

EventLog.Delete ("MyEventLogTarget");

}

Preberite vnose EventLog v C #

Vse vnose v dnevnik lahko preberete s spodnjim delčkom kode:

EventLog eventLog = nov EventLog ();

eventLog.Log = "MyEventLogTarget";

foreach (vnos EventLogEntry v eventLog.Entries)

// Tukaj napišite kodo po meri

}

Uporabite NLog za zapisovanje podatkov dnevnika v EventLog v C #

Zdaj bomo izkoristili paket NLog.WindowsEventLog. Ta paket nam bo omogočil uporabo NLog za pošiljanje podatkov dnevnika v EventLog med delom iz okolja .NET Core.

NLog.WindowsEventLog povzema zapletenosti povezovanja z EventLog in dela z EventLog iz ASP.NET Core. Preprosto morate poklicati metode NLog, kot običajno.

Ker bomo NLog uporabljali za beleženje podatkov v EventLog, v svoj projekt dodajte naslednji paket:

Namesti-paket NLog.WindowsEventLog

Ustvarite vmesnik za beleženje v jeziku C #

Ustvarite naslednji vmesnik za shranjevanje dnevnikov kot informacij, opozoril, odpravljanja napak ali napake.

javni vmesnik ILogManager

    {

void LogInformation (sporočilo v nizu);

void LogWarning (sporočilo v nizu);

void LogDebug (sporočilo v nizu);

void LogError (sporočilo v nizu);

    }

Izvedite razred NLogManager v C #

Nato ustvarite razred z imenom NLogManager, ki razširja vmesnik ILogManager in izvaja vsako od njegovih metod.

javni razred NLogManager: ILogManager

    {

zasebni statični zapisovalnik NLog.ILogger =

LogManager.GetCurrentClassLogger ();

javna void LogDebug (sporočilo v nizu)

        {

vrzi novo NotImplementedException ();

        }

javna void LogError (sporočilo v nizu)

        {

logger.Error (sporočilo);

        }

javna praznina LogInformation (sporočilo v nizu)

        {

vrzi novo NotImplementedException ();

        }

public void LogWarning (sporočilo v nizu)

        {

vrzi novo NotImplementedException ();

        }

    }

Izvedite metodo LogError v jeziku C #

Upoštevajte, da bomo zaradi enostavnosti v tem primeru uporabili metodo LogError, druge metode razreda NLogManager pa ne bodo implementirane. Zdaj pa razumejmo, kako lahko z NLog prijavimo podatke v EventLog. Spremenite metodo LogError za razred NLogManager, kot je prikazano spodaj:

javna void LogError (sporočilo v nizu)

    {

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

var logEventInfo = nov LogEventInfo (LogLevel.Error,

logger.Ime, sporočilo);

logger.Log (logEventInfo);

    }

Upoštevajte, da je EventLogTarget samo ime cilja dnevnika za EventLog, ki ga je treba določiti v konfiguracijski datoteki nlog.config. Razred LogEventInfo je vaš dnevniški dogodek, tj. Predstavlja dnevniški dogodek. Njenemu konstruktorju morate prenesti raven dnevnika, ime zapisovalnika in sporočilo, ki ga želite zabeležiti.

Konfigurirajte NLog za beleženje podatkov v EventLog v C #

Če želite programsko konfigurirati NLog za beleženje podatkov v EventLog, lahko uporabite naslednjo kodo:

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

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

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

NLog.LogManager.Configuration = config;

Izpolnite primer NLogManager v jeziku C #

Popolna izvorna koda razreda NLogManager je navedena spodaj:

javni razred NLogManager: ILogManager

    {

zasebni statični zapisovalnik NLog.ILogger =

LogManager.GetCurrentClassLogger ();

public void LogDebug (sporočilo v nizu)

        {

logger.Debug (sporočilo);

        }

javna void LogError (sporočilo v nizu)

        {

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

var logEventInfo = nov LogEventInfo (LogLevel.Error,

logger.Ime, sporočilo);

logger.Log (logEventInfo);

        }

javna void LogInformation (sporočilo v nizu)

        {

logger.Info (sporočilo);

        }

public void LogWarning (sporočilo v nizu)

        {

logger.Warn (sporočilo);

        }

    }

Če želite izvleči primerek NLogManager v krmilnike, ga dodajte v metodi ConfigureServices, kot je prikazano v spodnjem delčku kode.

services.AddSingleton ();

Ko zaženete Windows Event Viewer, lahko vidite sporočilo o napaki, zabeleženo tam, kot je prikazano na spodnjem posnetku zaslona.

Dnevnik dogodkov sistema Windows se običajno uporablja za snemanje sistemskih dogodkov, omrežnega prometa in povezanih podatkov, kot so varnost, zmogljivost itd. Dnevnik dogodkov sistema Windows lahko izkoristite kot cilj dnevnika za shranjevanje podatkov aplikacije. Če se vaša aplikacija izvaja samo v sistemu Windows, je dnevnik dogodkov sistema Windows dobra možnost za shranjevanje podatkov dnevnika dogodkov aplikacije.

Kako narediti več v jeziku C #:

  • Kako uporabljati ArrayPool in MemoryPool v C #
  • Kako uporabiti razred medpomnilnika v jeziku C #
  • Kako uporabljati HashSet v C #
  • Kako uporabljati imenovane in neobvezne parametre v jeziku C #
  • Kako primerjati kodo C # z uporabo BenchmarkDotNet
  • Kako uporabljati tekoče vmesnike in verigo metod v jeziku C #
  • Kako enotno preizkusiti statične metode v C #
  • Kako preoblikovati božje predmete v C #
  • Kako uporabljati ValueTask v jeziku C #
  • Kako uporabiti nespremenljivost v C
  • Kako uporabljati const, readonly in static v C #
  • Kako uporabljati pripise podatkov v jeziku C #
  • Kako delati z GUID-i v C # 8
  • Kdaj uporabiti abstraktni razred v primerjavi z vmesnikom v jeziku C #
  • Kako delati z AutoMapper v C #
  • Kako uporabljati lambda izraze v jeziku C #
  • Kako delati z delegati Action, Func in Predicate v C #
  • Kako delati z delegati v C #
  • Kako implementirati preprost zapisovalnik v jeziku C #
  • Kako delati z atributi v jeziku C #
  • Kako delati z log4net v C #
  • Kako implementirati vzorec oblikovanja repozitorija v C #
  • Kako delati z refleksijo v jeziku C #
  • Kako delati z nadzornikom datotek v C #
  • Kako izvesti leno inicializacijo v C #
  • Kako delati z MSMQ v C #
  • Kako delati z razširitvenimi metodami v jeziku C #
  • Kako do lambda izrazov v jeziku C #
  • Kdaj uporabiti hlapljivo ključno besedo v jeziku C #
  • Kako uporabiti ključno besedo yield v jeziku C #
  • Kako uporabiti polimorfizem v jeziku C #
  • Kako zgraditi lasten načrtovalnik opravil v C #
  • Kako delati z RabbitMQ v C #
  • Kako delati s korpico v jeziku C #
  • Raziskovanje virtualnih in abstraktnih metod v jeziku C #
  • Kako uporabljati Dapper ORM v C #
  • Kako uporabiti vzorec letenja v C #
$config[zx-auto] not found$config[zx-overlay] not found