Linee guida per la registrazione
I registri eventi archivia i record di eventi significativi per conto del sistema e delle applicazioni in esecuzione nel sistema. Poiché le funzioni di registrazione sono per utilizzo generico, è necessario decidere quali informazioni sono appropriate per la registrazione. In genere, è consigliabile registrare solo le informazioni che potrebbero essere utili per diagnosticare un problema hardware o software. La registrazione degli eventi non deve essere usata come strumento di traccia.
Scelta degli eventi da registrare
Di seguito sono riportati alcuni esempi di casi in cui la registrazione eventi può essere utile:
- Problemi relativi alle risorse. La registrazione di un evento di avviso quando l'allocazione della memoria non riesce può indicare la causa di una situazione di memoria insufficiente.
- Problemi hardware. Se un driver di dispositivo rileva un timeout del controller del disco, un guasto di alimentazione in una porta parallela o un errore di dati da una scheda di rete o seriale, il driver di dispositivo può registrare informazioni su questi eventi per aiutare l'amministratore di sistema a diagnosticare i problemi hardware.
- Settori negativi. Se un driver di disco rileva un settore non valido, potrebbe essere in grado di leggere o scrivere nel settore dopo aver rieseguito l'operazione, ma il settore andrà male alla fine. Se il driver del disco può continuare, dovrebbe registrare un evento di avviso; in caso contrario, dovrebbe registrare un evento Error. Se un driver del file system rileva un numero elevato di settori non corretti e li corregge, la registrazione degli eventi di avviso potrebbe aiutare un amministratore a determinare che il disco potrebbe non riuscire.
- Eventi informativi. Un'applicazione server ( ad esempio un server di database) registra un utente che accede, apre un database o avvia un trasferimento di file. Il server può anche registrare altri eventi, ad esempio errori (non è possibile accedere a file, processo host disconnesso e così via), danneggiamento del database o se il trasferimento di file è riuscito.
Scrittura di messaggi
I messaggi devono avere senso per gli amministratori e gli utenti che tentano di risolvere un problema. Un messaggio deve contenere tutte le informazioni necessarie per comprendere cosa ha causato il problema e come risolverlo.
Evitare di scrivere un messaggio criptico, ad esempio "Un pacchetto driver ricevuto dal sottosistema di I/O non è valido. I dati sono il pacchetto." Un messaggio migliore indica che il driver in questione funziona correttamente, ma registra pacchetti formattati in modo non corretto. Potrebbe continuare a dire che è necessaria una versione Unicode del driver per risolvere il problema. Per altre informazioni sulla scrittura di messaggi di errore validi, vedere Linee guida per i messaggi di errore.
Non usare tabulazioni o virgole nel testo del messaggio, perché i registri eventi possono essere salvati come file di testo delimitati da virgole o tabulazioni. Molte organizzazioni importano questi file nei database e i caratteri di formattazione aggiuntivi richiederanno la manipolazione manuale.
Quando si usano nomi UNC o altri collegamenti che contengono spazi, racchiudere il nome tra parentesi angolari. Ad esempio, <\\sharename\nomeserver>. È possibile scrivere un URL alla fine del messaggio che punta l'utente al materiale della Guida correlato. L'URL deve essere un nome host DNS completo. Ad esempio, è possibile aggiungere il testo seguente ai messaggi: "Per ulteriori informazioni su questo messaggio, visitare il sito di supporto all'indirizzo https://www.microsoft.com/Support/ProdRedirect/ContentSearch.asp
". Il collegamento genera una pagina ASP che reindirizza l'utente al contenuto relativo al messaggio di errore. Analizza parametri aggiuntivi (passati quando si fa clic sull'URL) per determinare dove reindirizzare l'utente.
Gli argomenti passati alla funzione ReportEvent vengono aggiunti all'URL come indicato di seguito:
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;
Se il nome della società, il nome del prodotto, la versione del prodotto, il nome file e la versione del file dall'intestazione DLL del messaggio per l'origine evento sono validi, vengono aggiunti anche all'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);
Riduzione del sovraccarico
La registrazione eventi utilizza risorse come spazio su disco e tempo del processore. La quantità di spazio su disco richiesta da un registro eventi e l'overhead per un'applicazione che registra gli eventi dipende dalla quantità di informazioni che si sceglie di registrare. Questo è il motivo per cui è importante registrare solo informazioni essenziali. È anche consigliabile inserire chiamate di registrazione eventi in un percorso di errore nel codice anziché nel percorso del codice principale, riducendo così le prestazioni.
La quantità di spazio su disco necessaria per ogni record del registro eventi include i membri della struttura EVENTLOGRECORD. Si tratta di una struttura a lunghezza variabile; stringhe e dati binari vengono archiviati seguendo la struttura.