Hoofdstuk 10 - Les 1

Systeembeheerders gebruiken het Windows event log om te monitoren of alle software naar behoren functioneert. Er zijn drie event logs:

  1. System – Bevat alle non-security gerelateerde operating system events
  2. Security – Bevat wie is in- en uitgelogd. Applicaties kunnen hier niet in schrijven
  3. Application – Oorspronkelijk bedoeld om gebeurtenissen van applicaties in op te slaan als deze geen specifieke event log hebben.


Events hebben altijd een source, welke de applicatie identificeert die het event heeft veroorzaakt. Voordat events kunnen worden gelogd moet eerst de applicatie geregistreerd worden als een event. Dit kan op twee manieren.
  1. Manueel door in het register een key aan te maken
  2. In de code

Voorbeeld in code (moet wel uitgevoerd worden door administrator):

If(!EventLog.SourceExists(“ My application”))
EventLog.CreateEventSource(“My application” , “My application Log”);
  • Events loggen gebeurt door EventLog.Source property te zetten en de method EventLog.WriteEntry aan te roepen met de volgende parameters:
  • Message – Een bericht die de conditie beschrijft.
  • Type – De EventLogEntryType enumeratie, waarden kunnen zijn Information, Warning, Error, FailureAudit (als een gebruiker geen toegang heeft tot een resource) of SuccessAudit(als een gebruiker toegang heeft verkregen tot een resource).
  • eventID – Een uniek nummer dat het evet type identificeert. De administrator kan op dit id zoeken. Het is mogelijk eigen applicatie specifieke id’s te genereren.
  • Category – Een die de event categorie specificeert. Ook dit is applicatie specifiek
  • rawData – Een byte array die je kan meesturen aan de administrator voor meer informatie over het event.


Voorbeeld code:
EventLog log = new EventLog(“My application Log”);
log.Source = “My application”;
log.WriteEntry(“Could not connect”, EventLogEntryType.Error, 1001, 15);
Events kunnen ook worden gelezen:
EventLog log = new EventLog(“My application Log”);
foreach(EventLogEntry entry in log.Entries)
{
Console.WriteLine(entry.Message);
}
Om debug informatieve enkel in ontwikkeltijd weer tegeven kan gebruikt gemaakt worden van de System.Diagnostics.Debug class. Gebruik de Debug.Indent methode om de ouptput in te laten springen. Gebruik Debug.Unindent om een inspringing te verwijderen.
In onderstaande wordt in Debug mode ‘starting application’ en ‘ending application’ weergegeven. Als de mode op Release staat wordt alleen ‘Hello, world’ weergegeven.
Debug.Listeners.Add(new ConsoleTraceListener());
Debug.AutoFlush = true;
Debug.Indent();
Debug.WriteLine(“starting application”);
Console.WriteLine(“Hello, world”);
Debug.WriteLine(“ending application”);
Debug.Unindent();
Debug class biedt ook een WriteIf en WriteLineIf methodes welke beide iets schrijven als de voorwaarde true is. Ook kan gebruikt gemaakt worden van de assert methode. Deze wordt gebruikt bij condities waarvan bekend is dat deze altijd true is. Als de consitie niet true is, stopt de Common Language Runtime (CLR) en geeft deze een foutmelding.
Debug.AutoFlush bepaalt of de debug output direct wordt geschreven. Als debug output direct naar het scherm moet worden geschreven (wat vrijwel altijd het geval is) zet deze dan op true. Als het gewenst is om alle output in 1 keer naar het scherm te schrijven (als de applicatie stopt) zet dan de waarde op false en gebruik Debug.Flush om de output te schrijven.

De Trace class methodes zijn vrijwel identiek aan die van de Debug class. Het verschil is dat Trace ook getoond word in Release mode.
De Trace en Debug class schijven hun output naar het immediate venster van Visual Studio omdat zij een standaard listener hebben: DefaultTraceListener. Dit maakt het mogelijk om tracé output direcht te laten zien zonder de GUI te bewerken. Van de volgende listeners kan gebruikt gemaakt worden:
  1. ConsoleTraceListener – Stuurt output naar de console of de standaard error stream.

  2. TextWriterTraceListener – Stuurt output naar een tekstbestand of een stream. Gebruik Console.Out om de output naar de console te sturen.
  3. XmlWriterTraceListener – Stuurt output naar een XML bestand door gebruik te maken van een TextWriter of stream instantie. Wordt gebruikt voor loggen.
  4. EventSchemaListener – Stuurt output naar een XML schema log bestand.
  5. DelimitedListTraceListener – Stuurt ouptu naar een gescheiden tekstbestand. Scheidingsteken kan bepaald worden in de DelimitedTraceListener.Delimiter property.
  6. EventLogTraceListener – Stuurt output naar de event log. Elke keer dat output is geflusht wordt een event gegenereerd. Om vele events te voorkomen,zet autoflush op false.


    • Om het mogelijk te maken voor gebruikers om trace informatie terug te vinden, maak dan een <system.diagnostics> sectie aan in het .config bestand.
      Onderstaand .config bestand configureert een console trace listener.

      <configuration>
      <system.diagnostics>
      <trace indentsize="4" autoflush="false">
      <listeners>
      <add type="System.Diagnostics.ConsoleTraceListener" name="configConsoleListener"/>
      </listeners>
      </trace>
      </system.diagnostics>
      </configuration>

    Reacties

    Populaire posts van deze blog

    [SQL Server] varchar vs nvarchar

    MS Sql 70-461: Chapter 5

    [C#] Class serialiseren en deserialiseren