Delen via


Richtlijnen voor logboekregistratie

Opmerking

De Event Logging-API is ontworpen voor toepassingen die worden uitgevoerd op het besturingssysteem Windows Server 2003, Windows XP of Windows 2000. In Windows Vista is de infrastructuur voor logboekregistratie opnieuw ontworpen. Toepassingen die zijn ontworpen om te worden uitgevoerd op de besturingssystemen Windows Vista of hoger, moeten nu gebruikmaken van Windows-gebeurtenislogboek.

Gebeurtenislogboeken slaan records op van belangrijke gebeurtenissen namens het systeem en toepassingen die op het systeem worden uitgevoerd. Omdat de logboekregistratiefuncties algemeen zijn, moet u bepalen welke informatie geschikt is om te registreren. Over het algemeen moet u alleen informatie vastleggen die nuttig kan zijn bij het diagnosticeren van een hardware- of softwareprobleem. Logboekregistratie van gebeurtenissen is niet bedoeld voor gebruik als traceringsprogramma.

Gebeurtenissen kiezen om te registreren

Hier volgen enkele voorbeelden van gevallen waarin logboekregistratie van gebeurtenissen nuttig kan zijn:

  • Resourceproblemen. Het vastleggen van een waarschuwingsgebeurtenis wanneer de geheugentoewijzing mislukt, kan helpen de oorzaak van een situatie met weinig geheugen aan te geven.
  • Hardwareproblemen. Als een apparaatstuurprogramma een time-out van een schijfcontroller, een stroomstoring in een parallelle poort of een gegevensfout van een netwerk of seriĆ«le kaart tegenkomt, kan het apparaatstuurprogramma informatie over deze gebeurtenissen vastleggen om de systeembeheerder te helpen hardwareproblemen vast te stellen.
  • Slechte sectoren. Als een schijfstuurprogramma een slechte sector tegenkomt, kan het mogelijk de sector lezen of beschrijven na het opnieuw proberen van de bewerking, maar uiteindelijk zal de sector defect raken. Als het schijfstuurprogramma kan doorgaan, moet er een waarschuwingsgebeurtenis worden vastgelegd, anders moet er een foutgebeurtenis worden vastgelegd. Wanneer een bestandssysteemstuurprogramma een groot aantal slechte sectoren vindt en deze herstelt, kan het loggen van waarschuwingsevenementen een beheerder mogelijk helpen bepalen dat de schijf op het punt staat te falen.
  • Informatie-evenementen. Een servertoepassing (zoals een databaseserver) registreert een gebruiker die zich aanmeldt, een database opent of een bestandsoverdracht start. De server kan ook andere gebeurtenissen registreren, zoals fouten (kan geen toegang krijgen tot bestand, hostproces verbroken, enzovoort), beschadiging van de database of of een bestandsoverdracht is geslaagd.

Berichten schrijven

Berichten moeten zinvol zijn voor beheerders en gebruikers die een probleem proberen op te lossen. Een bericht moet alle informatie bevatten die nodig is om te begrijpen wat het probleem heeft veroorzaakt en hoe het kan worden opgelost.

Vermijd het schrijven van een cryptisch bericht zoals 'Een stuurprogrammapakket dat is ontvangen van het I/O-subsysteem is ongeldig. De gegevens vormen het pakket. Een beter bericht geeft aan dat het betreffende stuurprogramma goed functioneert, maar dat de logging verkeerd opgemaakte pakketten bevat. Er kan worden gezegd dat er een Unicode-versie van het stuurprogramma nodig is om het probleem op te lossen. Zie Richtlijnen voor foutberichtenvoor meer informatie over het schrijven van goede foutberichten.

Gebruik geen tabs of komma's in de berichttekst, omdat gebeurtenislogboeken kunnen worden opgeslagen als door komma's of door tabs gescheiden tekstbestanden. Veel organisaties importeren deze bestanden in databases en de extra opmaaktekens vereisen handmatige manipulatie.

Wanneer u UNC-namen of andere koppelingen gebruikt die spaties bevatten, plaatst u de naam tussen punthaken. Bijvoorbeeld <\\sharename\servernaam>. U kunt een URL schrijven naar het einde van het bericht dat de gebruiker naar gerelateerd Help-materiaal verwijst. De URL moet een volledig gekwalificeerde DNS-hostnaam zijn. U kunt bijvoorbeeld de volgende tekst toevoegen aan uw berichten: "Ga naar onze ondersteuningssite op https://www.microsoft.com/Support/ProdRedirect/ContentSearch.aspvoor meer informatie over dit bericht." De koppeling zou leiden tot een ASP-pagina waarmee de gebruiker wordt omgeleid naar inhoud met betrekking tot het foutbericht. Er worden extra parameters geparseerd (doorgegeven wanneer op de URL wordt geklikt) om te bepalen waar de gebruiker moet worden omgeleid.

De argumenten die worden doorgegeven aan de functie ReportEvent, worden als volgt aan de URL toegevoegd:

strHTTPQuery += L"?EvtSrc=" + _strEscapedSource;
strHTTPQuery += L"&EvtCat=" + _strEscapedCategory;
strHTTPQuery += L"&EvtID=" + _strEscapedEventID;
strHTTPQuery += L"&EvtCatID=" + _strEscapedCategoryID;
strHTTPQuery += L"&EvtType=" + _strEscapedType;
strHTTPQuery += L"&EvtTypeID=" + _strEscapedTypeID;
strHTTPQuery += L"&EvtRptTime=" + _strEscapedDateAndTime;
strHTTPQuery += L"&EvtTZBias=" + _strEscapedTimeZoneBias;

Als de bedrijfsnaam, productnaam, productversie, bestandsnaam en bestandsversie van de bericht-DLL-header voor de gebeurtenisbron geldig zijn, worden ze ook toegevoegd aan de URL:

ADD_VER_STR(L"CoName",   _strEscapedCompanyName);
ADD_VER_STR(L"ProdName", _strEscapedProductName);
ADD_VER_STR(L"ProdVer",  _strEscapedProductVersion);
ADD_VER_STR(L"FileName", _strEscapedFileName);
ADD_VER_STR(L"FileVer",  _strEscapedFileVersion);

Overhead verminderen

Gebeurtenislogboeken verbruiken resources, zoals schijfruimte en processortijd. De hoeveelheid schijfruimte die een gebeurtenislogboek nodig heeft en de overhead voor een toepassing die gebeurtenissen registreert, is afhankelijk van hoeveel informatie u kiest om te registreren. Daarom is het belangrijk om alleen essentiƫle informatie te registreren. Het is ook handig om logboekregistratieaanroepen in een foutpad in de code te plaatsen in plaats van in het hoofdcodepad, wat de prestaties zou verminderen.

De hoeveelheid schijfruimte die nodig is voor elke gebeurtenislogboekrecord bevat de leden van de EVENTLOGRECORD structuur. Dit is een variabele lengtestructuur; tekenreeksen en binaire gegevens worden opgeslagen volgens de structuur.