Programmering

Slik logger du data til Windows Event Log in C #

Windows-operativsystemet logger data i Windows hendelseslogg når det oppstår et problem. Du kan se disse dataene ved hjelp av Windows Event Viewer-verktøyet. Denne artikkelen diskuterer hvordan du programmatisk kan jobbe med Windows Event Log in C #.

For å jobbe med kodeeksemplene som er gitt i denne artikkelen, bør du ha Visual Studio 2019 installert på systemet ditt. Hvis du ikke allerede har en kopi, kan du laste ned Visual Studio 2019 her.

Opprett et .NET Core-konsollapplikasjonsprosjekt i Visual Studio

La oss først lage et .NET Core-konsollapplikasjonsprosjekt i Visual Studio. Forutsatt at Visual Studio 2019 er installert i systemet ditt, følger du trinnene som er beskrevet nedenfor for å opprette et nytt .NET Core-konsollapplikasjonsprosjekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klikk på "Opprett nytt prosjekt."
  3. I vinduet "Opprett nytt prosjekt" velger du "Konsollapp (.NET Core)" fra listen over maler som vises.
  4. Klikk på Neste.
  5. I vinduet “Konfigurer ditt nye prosjekt” som vises, angir du navnet og stedet for det nye prosjektet.
  6. Klikk på Opprett.

Dette vil opprette et nytt .NET Core-konsollapplikasjonsprosjekt i Visual Studio 2019. Vi bruker dette prosjektet til å jobbe med Windows-hendelsesloggen i de påfølgende delene av denne artikkelen.

Installer EventLog NuGet-pakken

For å kunne jobbe med Windows Event Log in .NET Core-applikasjoner, bør du installere Microsoft.Extensions.Logging.EventLog-pakken fra NuGet. Du kan gjøre dette enten via NuGet Package Manager inne i Visual Studio 2019 IDE, eller ved å utføre følgende kommando i NuGet Package Manager-konsollen:

Installasjonspakke Microsoft.Extensions.Logging.EventLog

Opprett en forekomst av EventLog-klassen i C #

For å opprette en forekomst av EventLog-klassen og skrive en oppføring til Windows Event Log, kan du bruke følgende kode:

EventLog eventLog = ny EventLog ();

eventLog.Source = "MyEventLogTarget";

eventLog.WriteEntry ("Dette er en testmelding.", EventLogEntryType.Information);

Skriv til en EventLog-forekomst i C #

Hvis du vil logge data til denne EventLog-forekomsten fra applikasjonen din, kan du bruke følgende kode:

string message = "Dette er en testmelding.";

bruker (EventLog eventLog = new EventLog ("Application"))

{

eventLog.Source = "Søknad";

eventLog.WriteEntry (melding, EventLogEntryType.Information);

}

Fjern en EventLog-forekomst i C #

For å fjerne EventLog-forekomsten kan du bruke følgende kode:

EventLog eventLog = ny EventLog ();

eventLog.Source = "MyEventLogSource";

eventLog.Clear ();

Følgende kodebit kan brukes til å slette en hendelseslogg.

hvis (EventLog.Exists ("MyEventLogTarget"))

{

EventLog.Delete ("MyEventLogTarget");

}

Les EventLog-oppføringer i C #

Du kan lese alle loggoppføringene ved hjelp av kodebiten gitt nedenfor:

EventLog eventLog = ny EventLog ();

eventLog.Log = "MyEventLogTarget";

foreach (EventLogEntry-oppføring i eventLog.Entries)

// Skriv din tilpassede kode her

}

Bruk NLog til å skrive loggdata til EventLog i C #

Nå vil vi dra nytte av NLog.WindowsEventLog-pakken. Denne pakken lar oss bruke NLog til å sende loggdata til EventLog mens vi arbeider fra .NET Core-miljøet.

NLog.WindowsEventLog innkapsler komplikasjonene ved å koble til EventLog og jobbe med EventLog fra ASP.NET Core. Du må bare ringe NLog-metoder som du vanligvis gjør.

Siden vi bruker NLog til å logge data til EventLog, kan du legge til følgende pakke i prosjektet:

Installasjonspakke NLog.WindowsEventLog

Opprett et logggrensesnitt i C #

Opprett følgende grensesnitt for å lagre loggene som informasjon, advarsel, feilsøking eller feil.

offentlig grensesnitt ILogManager

    {

ugyldig LogInformation (strengmelding);

ugyldig LogWarning (strengmelding);

ugyldig LogDebug (strengmelding);

ugyldig LogError (strengmelding);

    }

Implementere en NLogManager-klasse i C #

Deretter oppretter du en klasse som heter NLogManager som utvider ILogManager-grensesnittet og implementerer hver av metodene.

offentlig klasse NLogManager: ILogManager

    {

privat statisk NLog.ILogger logger =

LogManager.GetCurrentClassLogger ();

offentlig ugyldig LogDebug (strengmelding)

        {

kaste nye NotImplementedException ();

        }

offentlig ugyldig LogError (strengmelding)

        {

logger.Error (melding);

        }

offentlig ugyldig LogInformation (strengmelding)

        {

kaste nye NotImplementedException ();

        }

offentlig ugyldig LogWarning (strengmelding)

        {

kaste nye NotImplementedException ();

        }

    }

Implementere en LogError-metode i C #

Merk at for enkelhets skyld bruker vi LogError-metoden i dette eksemplet, og de andre metodene i NLogManager-klassen blir ikke implementert. La oss nå forstå hvordan vi kan bruke NLog til å logge data til EventLog. Endre LogError-metoden i NLogManager-klassen som vist nedenfor:

offentlig ugyldig LogError (strengmelding)

    {

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

var logEventInfo = ny LogEventInfo (LogLevel.Error,

logger.Name, melding);

logger.Log (logEventInfo);

    }

Merk at EventLogTarget bare er navnet på loggmålet for EventLog, som må defineres i konfigurasjonsfilen nlog.config. LogEventInfo-klassen er logghendelsen din, dvs. den representerer logghendelsen. Til sin konstruktør bør du sende loggnivået, navnet på loggeren og meldingen som skal logges.

Konfigurer NLog for å logge data til EventLog i C #

For å konfigurere NLog programmatisk for å logge data til EventLog, kan du bruke følgende kode:

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

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

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

NLog.LogManager.Configuration = config;

Komplett NLogManager-eksempel i C #

Den komplette kildekoden til NLogManager-klassen er gitt nedenfor for din referanse:

offentlig klasse NLogManager: ILogManager

    {

privat statisk NLog.ILogger logger =

LogManager.GetCurrentClassLogger ();

offentlig ugyldig LogDebug (strengmelding)

        {

logger.Debug (melding);

        }

offentlig ugyldig LogError (strengmelding)

        {

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

var logEventInfo = ny LogEventInfo (LogLevel.Error,

logger.Name, melding);

logger.Log (logEventInfo);

        }

offentlig ugyldig LogInformation (strengmelding)

        {

logger.Info (melding);

        }

offentlig ugyldig LogWarning (strengmelding)

        {

logger.Warn (melding);

        }

    }

For å utnytte NLogManager-forekomsten i kontrollerne, bør du legge til en forekomst av den i ConfigureServices-metoden som vist i kodebiten gitt nedenfor.

tjenester.AddSingleton ();

Når du starter Windows Event Viewer, kan du se feilmeldingen logget der som vist på skjermbildet nedenfor.

Windows hendelseslogg brukes vanligvis til å registrere systemhendelser, nettverkstrafikk og relaterte data som sikkerhet, ytelse osv. Du kan dra nytte av Windows hendelseslogg som et loggmål for å lagre programmets data. Hvis applikasjonen din bare kjører på Windows, er Windows Event Log et fint alternativ for å lagre programmets hendelsesloggdata.

Hvordan gjøre mer i C #:

  • Hvordan bruke ArrayPool og MemoryPool i C #
  • Hvordan bruke bufferklassen i C #
  • Hvordan bruke HashSet i C #
  • Hvordan bruke navngitte og valgfrie parametere i C #
  • Slik benchmarker du C # -kode ved hjelp av BenchmarkDotNet
  • Hvordan bruke flytende grensesnitt og metodekjetting i C #
  • Hvordan enhetstest statiske metoder i C #
  • Hvordan refaktorere Guds objekter i C #
  • Hvordan bruke ValueTask i C #
  • Hvordan bruke uforanderlighet i C
  • Slik bruker du const, readonly og static i C #
  • Slik bruker du datanoteringer i C #
  • Hvordan jobbe med GUIDer i C # 8
  • Når skal jeg bruke en abstrakt klasse vs. grensesnitt i C #
  • Hvordan jobbe med AutoMapper i C #
  • Hvordan bruke lambdauttrykk i C #
  • Hvordan jobbe med Action-, Func- og Predicate-delegater i C #
  • Hvordan jobbe med delegater i C #
  • Slik implementerer du en enkel logger i C #
  • Hvordan jobbe med attributter i C #
  • Hvordan jobbe med log4net i C #
  • Slik implementerer du mønsteret for depotdesign i C #
  • Hvordan jobbe med refleksjon i C #
  • Hvordan jobbe med filsystemwatcher i C #
  • Hvordan utføre lat initialisering i C #
  • Hvordan jobbe med MSMQ i C #
  • Hvordan jobbe med utvidelsesmetoder i C #
  • Hvordan vi lambdauttrykk i C #
  • Når skal du bruke det flyktige nøkkelordet i C #
  • Slik bruker du avkastningsnøkkelordet i C #
  • Hvordan implementere polymorfisme i C #
  • Hvordan lage din egen oppgaveplanlegger i C #
  • Hvordan jobbe med RabbitMQ i C #
  • Hvordan jobbe med en tuple i C #
  • Utforske virtuelle og abstrakte metoder i C #
  • Hvordan bruke Dapper ORM i C #
  • Hvordan bruke flyvevekt mønster i C #
$config[zx-auto] not found$config[zx-overlay] not found