Ohjelmointi

Tietojen kirjaaminen Windowsin tapahtumalokiin C #: ssä

Windows-käyttöjärjestelmä kirjaa tiedot Windowsin tapahtumalokiin aina, kun ilmenee ongelma. Voit tarkastella näitä tietoja Windowsin tapahtumienvalvontatyökalulla. Tässä artikkelissa kerrotaan, kuinka voit ohjelmallisesti työskennellä Windowsin tapahtumalokin kanssa C #: ssä.

Jotta voit työskennellä tässä artikkelissa annettujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo .NET Core -konsolisovellusprojekti Visual Studiossa

Ensinnäkin, luodaan .NET Core -konsolisovellusprojekti Visual Studiossa. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi .NET Core -konsolisovellusprojekti Visual Studiossa noudattamalla seuraavia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”Console App (.NET Core)” näytetystä malliluettelosta.
  4. Napsauta Seuraava.
  5. Määritä seuraavan projektin nimi ja sijainti uuden Konfiguroi uusi projekti -ikkunassa.
  6. Napsauta Luo.

Tämä luo uuden .NET Core -konsolisovellusprojektin Visual Studio 2019: ssä. Tätä projektia käytetään työskentelemään Windowsin tapahtumalokin kanssa tämän artikkelin seuraavissa osissa.

Asenna EventLog NuGet -paketti

Jotta voisit työskennellä Windowsin tapahtumalokin kanssa .NET Core -sovelluksissa, sinun on asennettava Microsoft.Extensions.Logging.EventLog-paketti NuGetistä. Voit tehdä tämän joko Visual Studio 2019 IDE: n sisällä olevan NuGet Package Managerin kautta tai suorittamalla seuraavan komennon NuGet Package Manager -konsolissa:

Asenna paketti Microsoft.Extensions.Logging.EventLog

Luo EventLog-luokan ilmentymä C #: ssä

Voit luoda EventLog-luokan ilmentymän ja kirjoittaa merkinnän Windowsin tapahtumalokiin seuraavalla koodilla:

EventLog eventLog = uusi EventLog ();

eventLog.Source = "MyEventLogTarget";

eventLog.WriteEntry ("Tämä on testiviesti.", EventLogEntryType.Information);

Kirjoita EventLog-ilmentymään C #: ssä

Jos haluat kirjata tietoja tähän EventLog-ilmentymään sovelluksestasi, voit käyttää seuraavaa koodia:

string message = "Tämä on testiviesti.";

käyttämällä (EventLog eventLog = new EventLog ("Sovellus"))

{

eventLog.Source = "Sovellus";

eventLog.WriteEntry (viesti, EventLogEntryType.Information);

}

Tyhjennä EventLog-esiintymä C #: ssä

Voit tyhjentää EventLog-ilmentymän käyttämällä seuraavaa koodia:

EventLog eventLog = uusi EventLog ();

eventLog.Source = "MyEventLogSource";

eventLog.Clear ();

Seuraavaa koodinpätkää voidaan käyttää tapahtumalokin poistamiseen.

jos (EventLog.Exists ("MyEventLogTarget"))

{

EventLog.Delete ("MyEventLogTarget");

}

Lue EventLog-merkinnät C #: ssä

Voit lukea kaikki lokimerkinnät alla olevan koodinpätkän avulla:

EventLog eventLog = uusi EventLog ();

eventLog.Log = "MyEventLogTarget";

foreach (EventLogEntry-merkintä tapahtumalog.Entries)

// Kirjoita mukautettu koodi tähän

}

Kirjoita lokitiedot EventLogiin NLogilla C #: lla

Nyt hyödynnämme NLog.WindowsEventLog-pakettia. Tämän paketin avulla voimme käyttää NLogia lokitietojen lähettämiseen EventLogiin työskennellessä .NET Core -ympäristöstä.

NLog.WindowsEventLog yhdistää tapahtumalokiin yhdistämisen ja EventLog-palvelun ASP.NET Core -sovelluksen yksityiskohdat. Sinun tarvitsee vain kutsua NLog-menetelmiä tavalliseen tapaan.

Koska käytämme NLogia tietojen kirjaamiseen EventLogiin, lisää seuraava paketti projektiisi:

Install-Package NLog.WindowsEventLog

Luo lokirajapinta C #: ssä

Luo seuraava käyttöliittymä lokien tallentamiseksi tietona, varoituksena, virheenkorjauksena tai virheenä.

julkinen käyttöliittymä ILogManager

    {

void LogInformation (merkkijonoviesti);

void LogWarning (merkkijonoviesti);

void LogDebug (merkkijonoviesti);

void LogError (merkkijonoviesti);

    }

Toteuta NLogManager-luokka C #: ssä

Luo seuraavaksi luokka nimeltä NLogManager, joka laajentaa ILogManager-käyttöliittymää ja toteuttaa kaikki sen menetelmät.

julkisen luokan NLogManager: ILogManager

    {

yksityinen staattinen NLog.ILogger logger =

LogManager.GetCurrentClassLogger ();

public void LogDebug (merkkijonoviesti)

        {

heittää uusi NotImplementedException ();

        }

public void LogError (merkkijonoviesti)

        {

logger.Error (viesti);

        }

public void LogInformation (merkkijonoviesti)

        {

heittää uusi NotImplementedException ();

        }

public void LogWarning (merkkijono)

        {

heittää uusi NotImplementedException ();

        }

    }

Toteuta LogError-menetelmä C #: ssä

Huomaa, että yksinkertaisuuden vuoksi käytämme tässä esimerkissä LogError-menetelmää ja muita NLogManager-luokan menetelmiä ei oteta käyttöön. Ymmärretään nyt, kuinka voimme käyttää NLogia tietojen kirjaamiseen EventLogiin. Muokkaa NLogManager-luokan LogError-menetelmää alla olevan kuvan mukaisesti:

public void LogError (merkkijonoviesti)

    {

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

var logEventInfo = uusi LogEventInfo (LogLevel.Error,

logger.Nimi, viesti);

logger.Log (logEventInfo);

    }

Huomaa, että EventLogTarget on vain EventLog-lokikohteen nimi, joka on määritettävä määritystiedostossa nlog.config. LogEventInfo-luokka on lokitapahtuma, eli se edustaa lokitapahtumaa. Sen rakentajalle sinun on välitettävä lokitaso, kirjaajan nimi ja kirjattava viesti.

Määritä NLog kirjaamaan tiedot EventLogiin C #: ssä

Voit määrittää NLogin ohjelmallisesti kirjaamaan tiedot EventLogiin käyttämällä seuraavaa koodia:

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

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

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

NLog.LogManager.Configuration = config;

Täydellinen NLogManager-esimerkki C #: ssä

NLogManager-luokan täydellinen lähdekoodi on annettu alla viitteellesi:

julkisen luokan NLogManager: ILogManager

    {

yksityinen staattinen NLog.ILogger logger =

LogManager.GetCurrentClassLogger ();

public void LogDebug (merkkijonoviesti)

        {

logger.Debug (viesti);

        }

public void LogError (merkkijonoviesti)

        {

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

var logEventInfo = uusi LogEventInfo (LogLevel.Error,

logger.Nimi, viesti);

logger.Log (logEventInfo);

        }

public void LogInformation (merkkijonoviesti)

        {

logger.Info (viesti);

        }

public void LogWarning (merkkijonoviesti)

        {

logger.Warn (viesti);

        }

    }

NLogManager-ilmentymän hyödyntämiseksi ohjaimissa sinun on lisättävä sen esiintymä ConfigureServices-menetelmään alla olevan koodinpätkän mukaisesti.

palvelut. AddSingleton ();

Kun käynnistät Windowsin tapahtumien katseluohjelman, näet virheilmoituksen, joka on kirjattu sinne alla olevan kuvakaappauksen mukaisesti.

Windowsin tapahtumalokia käytetään tyypillisesti järjestelmätapahtumien, verkkoliikenteen ja niihin liittyvien tietojen, kuten suojaus, suorituskyky jne., Tallentamiseen. Voit hyödyntää Windowsin tapahtumalokia lokikohteena sovelluksesi tietojen tallentamiseen. Jos sovelluksesi toimii vain Windowsissa, Windowsin tapahtumaloki on hyvä tapa tallentaa sovelluksesi tapahtumalokitiedot.

Kuinka tehdä enemmän C #: ssä:

  • ArrayPoolin ja MemoryPoolin käyttäminen C #: ssä
  • Kuinka käyttää puskuriluokkaa C #: ssa
  • HashSetin käyttäminen C #: ssä
  • Nimettyjen ja valinnaisten parametrien käyttäminen C #: ssä
  • Kuinka vertailla C # -koodia BenchmarkDotNetin avulla
  • Kuinka käyttää sujuvia rajapintoja ja menetelmäketjua C #: ssä
  • Staattisten menetelmien testaaminen yksikössä C #
  • Kuinka refactor Jumalan esineitä C #
  • Kuinka käyttää ValueTaskia C #: ssä
  • Kuinka käyttää muuttumattomuutta C: ssä
  • Kuinka käyttää const, readonly ja staattinen C #: ssä
  • Tietomerkintöjen käyttäminen C #: ssä
  • Kuinka käyttää GUID-tunnuksia C # 8: ssa
  • Milloin abstraktia luokkaa vs. käyttöliittymää käytetään C #: ssä
  • Kuinka työskennellä AutoMapperin kanssa C #: ssä
  • Kuinka käyttää lambda-lausekkeita C #: ssä
  • Kuinka toimia Action-, Func- ja Predicate-edustajien kanssa C #: ssä
  • Kuinka työskennellä C #: n edustajien kanssa
  • Kuinka toteuttaa yksinkertainen kirjaaja C #: ssä
  • Kuinka työskennellä attribuuttien kanssa C #: ssä
  • Kuinka työskennellä log4netin kanssa C #: ssä
  • Kuinka toteuttaa arkiston suunnittelumalli C #: ssä
  • Kuinka työskennellä heijastuksen kanssa C #: ssä
  • Kuinka työskennellä tiedostojärjestelmän katselijan kanssa C #: ssä
  • Kuinka tehdä laiska alustus C #: ssä
  • Kuinka työskennellä MSMQ: n kanssa C #: ssä
  • Kuinka työskennellä laajennusmenetelmien kanssa C #: ssä
  • Kuinka meille lambda-lausekkeet C #: ssä
  • Milloin haihtuvaa avainsanaa käytetään C #: ssä
  • Tuottoavainsanan käyttäminen C #: ssä
  • Kuinka toteuttaa polymorfismi C #: ssa
  • Kuinka rakentaa oma tehtävän ajastin C #
  • Kuinka työskennellä RabbitMQ: n kanssa C #: ssä
  • Kuinka työskennellä C #: n kanssa
  • Virtuaalisten ja abstraktien menetelmien tutkiminen C #: ssä
  • Kuinka käyttää Dapper ORMia C #: ssä
  • Lentopainokuvion käyttäminen C #: ssä