Programavimas

Kaip registruoti duomenis į „Windows“ įvykių žurnalą C #

„Windows“ operacinė sistema registruoja duomenis į „Windows“ įvykių žurnalą, kai tik iškyla problema. Šiuos duomenis galite peržiūrėti naudodami „Windows“ įvykių peržiūros priemonės įrankį. Šiame straipsnyje aptariama, kaip galite programiškai dirbti su „Windows“ įvykių žurnalu C #.

Norėdami dirbti su šiame straipsnyje pateiktais kodų pavyzdžiais, sistemoje turite būti įdiegę „Visual Studio 2019“. Jei dar neturite kopijos, galite atsisiųsti „Visual Studio 2019“ čia.

„Visual Studio“ sukurkite .NET Core konsolės programos projektą

Pirmiausia sukurkime .NET Core konsolės programos projektą „Visual Studio“. Darant prielaidą, kad „Visual Studio 2019“ yra įdiegta jūsų sistemoje, atlikite toliau nurodytus veiksmus, kad sukurtumėte naują .NET Core konsolės programos projektą „Visual Studio“.

  1. Paleiskite „Visual Studio IDE“.
  2. Spustelėkite „Sukurti naują projektą“.
  3. Lange „Kurti naują projektą“ iš rodomų šablonų sąrašo pasirinkite „Console App (.NET Core)“.
  4. Spustelėkite Pirmyn.
  5. Tada rodomame lange „Konfigūruoti naują projektą“ nurodykite naujo projekto pavadinimą ir vietą.
  6. Spustelėkite Sukurti.

Tai sukurs naują „.NET Core“ konsolės programos projektą „Visual Studio 2019“. Šį projektą naudosime dirbdami su „Windows“ įvykių žurnalu tolesniuose šio straipsnio skyriuose.

Įdiekite „EventLog NuGet“ paketą

Kad galėtumėte dirbti su „Windows“ įvykių žurnalu .NET Core programose, turėtumėte įdiegti „Microsoft.Extensions.Logging.EventLog“ paketą iš „NuGet“. Tai galite padaryti naudodami „NuGet“ paketų tvarkytuvę „Visual Studio 2019“ IDE arba vykdydami šią komandą „NuGet“ paketų tvarkyklės konsolėje:

„Microsoft.Extensions.Logging.EventLog“ diegimo paketas

Sukurkite „EventLog“ klasės egzempliorių C #

Norėdami sukurti „EventLog“ klasės egzempliorių ir įrašyti įrašą į „Windows“ įvykių žurnalą, galite naudoti šį kodą:

EventLog eventLog = new EventLog ();

eventLog.Source = "MyEventLogTarget";

eventLog.WriteEntry ("Tai bandomasis pranešimas.", EventLogEntryType.Information);

Parašykite „EventLog“ egzemplioriui C #

Jei norite prisijungti prie „EventLog“ egzemplioriaus duomenis iš savo programos, galite naudoti šį kodą:

string message = "Tai bandomasis pranešimas.";

naudojant [EventLog eventLog = new EventLog („Programa“))

{

eventLog.Source = "Programa";

eventLog.WriteEntry (pranešimas, EventLogEntryType.Information);

}

Išvalykite „EventLog“ egzempliorių C #

Norėdami išvalyti „EventLog“ egzempliorių, galite naudoti šį kodą:

EventLog eventLog = new EventLog ();

eventLog.Source = "MyEventLogSource";

eventLog.Clear ();

Šį kodo fragmentą galima naudoti įvykių žurnalui ištrinti.

jei („EventLog.Exists“ („MyEventLogTarget“))

{

„EventLog.Delete“ („MyEventLogTarget“);

}

Skaityti „EventLog“ įrašus C #

Visus žurnalo įrašus galite perskaityti naudodami toliau pateiktą kodo fragmentą:

EventLog eventLog = new EventLog ();

eventLog.Log = "MyEventLogTarget";

foreach („EventLogEntry“ įrašas „eventLog.Entries“)

// Čia parašykite savo pasirinktinį kodą

}

Naudokite „NLog“, kad įrašytumėte žurnalo duomenis į „EventLog“ C #

Dabar mes pasinaudosime „NLog.WindowsEventLog“ paketo pranašumais. Šis paketas leis mums naudoti „NLog“ žurnalo duomenims siųsti į „EventLog“ dirbant iš .NET Core aplinkos.

NLog.WindowsEventLog apibendrina prisijungimo prie EventLog ir darbo su EventLog iš ASP.NET Core subtilybes. Tiesiog turite iškviesti „NLog“ metodus, kaip paprastai darote.

Kadangi registruodami duomenis „EventLog“ naudosime „NLog“, prie projekto pridėkite šį paketą:

„Install-Package NLog.WindowsEventLog“

Sukurkite registravimo sąsają naudodami C #

Sukurkite šią sąsają, kad išsaugotumėte žurnalus kaip informaciją, įspėjimą, derinimą ar klaidą.

viešoji sąsaja „ILogManager“

    {

negaliojanti „LogInformation“ (eilutės pranešimas);

negaliojantis „LogWarning“ (eilutės pranešimas);

negaliojantis „LogDebug“ (eilutės pranešimas);

negaliojantis „LogError“ (eilutės pranešimas);

    }

Įdiekite „NLogManager“ klasę C #

Tada sukurkite klasę pavadinimu „NLogManager“, kuri pratęsia „ILogManager“ sąsają ir įgyvendina visus jos metodus.

viešosios klasės „NLogManager“: „ILogManager“

    {

privatus statinis NLog.ILogger logger =

„LogManager.GetCurrentClassLogger“ ();

public void „LogDebug“ (eilutės pranešimas)

        {

mesti naują NotImplementedException ();

        }

public void „LogError“ (eilutės pranešimas)

        {

logger.Error (pranešimas);

        }

public void „LogInformation“ (eilutės pranešimas)

        {

mesti naują NotImplementedException ();

        }

public void „LogWarning“ (eilutės pranešimas)

        {

mesti naują NotImplementedException ();

        }

    }

Įdiekite „LogError“ metodą C #

Atkreipkite dėmesį, kad paprastumo sumetimais šiame pavyzdyje naudosime „LogError“ metodą, o kiti „NLogManager“ klasės metodai nebus įgyvendinti. Dabar supraskime, kaip galime naudoti „NLog“ registruodami duomenis „EventLog“. Pakeiskite „NLogManager“ klasės „LogError“ metodą, kaip parodyta žemiau:

public void „LogError“ (eilutės pranešimas)

    {

Logger logger = „LogManager.GetLogger“ („EventLogTarget“);

var logEventInfo = new LogEventInfo („LogLevel.Error“,

logger.Pavadinimas, pranešimas);

logger.Log (logEventInfo);

    }

Atminkite, kad „EventLogTarget“ yra tik „EventLog“ žurnalo taikinio pavadinimas, kurį reikia apibrėžti konfigūracijos faile nlog.config. „LogEventInfo“ klasė yra jūsų žurnalo įvykis, t. Y. Jis žymi žurnalo įvykį. Jo konstruktoriui turėtumėte perduoti žurnalo lygį, registruotojo pavadinimą ir registruotiną pranešimą.

Konfigūruokite „NLog“, kad duomenys būtų registruojami „EventLog“ C #

Norėdami programiškai sukonfigūruoti „NLog“ registruoti duomenis į „EventLog“, galite naudoti šį kodą:

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

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

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

NLog.LogManager.Configuration = config;

Užbaigti „NLogManager“ pavyzdį C #

Pilnas NLogManager klasės šaltinio kodas pateiktas jūsų nuoroda:

viešosios klasės „NLogManager“: „ILogManager“

    {

privatus statinis NLog.ILogger logger =

„LogManager.GetCurrentClassLogger“ ();

public void „LogDebug“ (eilutės pranešimas)

        {

logger.Dugug (pranešimas);

        }

public void „LogError“ (eilutės pranešimas)

        {

Logger logger = „LogManager.GetLogger“ („EventLogTarget“);

var logEventInfo = new LogEventInfo („LogLevel.Error“,

logger.Pavadinimas, pranešimas);

logger.Log (logEventInfo);

        }

public void „LogInformation“ (eilutės pranešimas)

        {

logger.Info (pranešimas);

        }

public void „LogWarning“ (eilutės pranešimas)

        {

logger. Įspėjimas (pranešimas);

        }

    }

Norėdami naudoti „NLogManager“ egzempliorių valdikliuose, turėtumėte pridėti jo egzempliorių „ConfigureServices“ metodu, kaip parodyta toliau pateiktame kodo fragmente.

paslaugos.AddSingleton ();

Paleidus „Windows“ įvykių peržiūros priemonę, galite pamatyti ten užregistruotą klaidos pranešimą, kaip parodyta toliau pateiktoje ekrano kopijoje.

„Windows“ įvykių žurnalas paprastai naudojamas sistemos įvykiams, tinklo srautui ir susijusiems duomenims, pvz., Saugumui, našumui ir kt., Įrašyti. Galite naudoti „Windows“ įvykių žurnalo kaip žurnalo tikslą savo programos duomenims saugoti. Jei jūsų programa veikia tik sistemoje „Windows“, „Windows“ įvykių žurnalas yra puiki galimybė išsaugoti programos įvykių žurnalo duomenis.

Kaip padaryti daugiau C #:

  • Kaip naudoti „ArrayPool“ ir „MemoryPool“ C #
  • Kaip naudoti buferio klasę C #
  • Kaip naudoti „HashSet“ C #
  • Kaip naudoti pavadintus ir pasirenkamus parametrus C #
  • Kaip palyginti C # kodą naudojant „BenchmarkDotNet“
  • Kaip naudoti sklandžias sąsajas ir metodų susiejimą C #
  • Kaip susieti statinius metodus C #
  • Kaip performuoti Dievo objektus C #
  • Kaip naudoti „ValueTask“ C #
  • Kaip naudoti nekintamumą C
  • Kaip naudoti const, readonly ir static C #
  • Kaip naudoti duomenų komentarus C #
  • Kaip dirbti su GU # C # 8
  • Kada naudoti abstrakčią klasę ir sąsają C #
  • Kaip dirbti su „AutoMapper“ C #
  • Kaip naudoti lambda išraiškas C #
  • Kaip dirbti su „Action“, „Func“ ir „Predicate“ delegatais C #
  • Kaip dirbti su delegatais C #
  • Kaip įdiegti paprastą kaupiklį C #
  • Kaip dirbti su atributais C #
  • Kaip dirbti su „Log4net“ C #
  • Kaip įgyvendinti saugyklos dizaino modelį C #
  • Kaip dirbti su atspindžiu C #
  • Kaip dirbti su failų stebėjimo programa C #
  • Kaip atlikti tingų inicializavimą C #
  • Kaip dirbti su MSMQ C #
  • Kaip dirbti su plėtinių metodais C #
  • Kaip mums lambda išraiškos C #
  • Kada naudoti nepastovų raktinį žodį C #
  • Kaip naudoti pajamingumo raktinį žodį C #
  • Kaip įgyvendinti polimorfizmą C #
  • Kaip sukurti savo užduočių planavimo priemonę C #
  • Kaip dirbti su „RabbitMQ“ C #
  • Kaip dirbti su dvigubu C #
  • Naršyti virtualius ir abstrakčius metodus C #
  • Kaip naudoti Dapper ORM C #
  • Kaip naudoti „flyweight“ dizaino modelį C #