Identifikátory událostí (protokolování událostí)
Identifikátory událostí jednoznačně identifikují konkrétní událost. Každý zdroj událostí může definovat vlastní číslovaný události a popisové řetězce, na které jsou mapovány v souboru zprávy. Čtenáři událostí mohou tyto řetězce prezentovat uživateli. Měli by uživateli pomoct pochopit, co se nepovedlo, a navrhnout, jaké akce se mají provést. Nasměrujte popis na uživatele, kteří řeší své vlastní problémy, ne u správců nebo techniků podpory. Další informace naleznete v tématu Pokyny k chybové zprávě.
Formát
Následující diagram znázorňuje formát identifikátoru události.
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+---+-+-+-----------------------+-------------------------------+
|Sev|C|R| Facility | Code |
+---+-+-+-----------------------+-------------------------------+
-
sev
-
Závažnost. Závažnost je definována takto:
- 00 - Úspěch
- 01 - Informační
- 10 – Upozornění
- 11. Chyba
-
C
-
Bit zákazníka. Tento bit je definován takto:
- 0 – Systémový kód
- 1. Kód zákazníka
-
R
-
Rezervovaný bit.
-
zařízení
-
Kód zařízení. Tato hodnota může být FACILITY_NULL.
-
Code
-
Stavový kód zařízení.
Definice zpráv
Zprávy jsou definovány v souboru zprávy události. Řetězce popisu v souboru zprávy události jsou indexovány identifikátorem události, což prohlížeči událostí umožňuje zobrazit text specifický pro událost pro libovolnou událost na základě identifikátoru události. Všechny popisy jsou lokalizované a závislé na jazyce. Další informace o vytvoření souboru zprávy naleznete v tématu textové soubory zprávy.
Popisové řetězce mohou obsahovat zástupné symboly pro vložení, %formuláře n, kde %1 označuje první řetězec vložení atd. Například následující položka je ukázková položka v souboru .mc:
MessageId=0x4
Severity=Error
Facility=System
SymbolicName=MSG_CMD_DELETE
Language=English
File %1 contains %2, which is in error.
.
V tomto případě vyrovnávací paměť vrácená ReadEventLog obsahuje řetězce vložení. NumStrings člen struktury EVENTLOGRECORD označuje počet řetězců vložení. StringOffset člen EVENTLOGRECORD struktury označuje umístění prvního řetězce vložení do vyrovnávací paměti. Můžete předat pole DWORD_PTRs, které odkazují na adresu každý řetězec v vyrovnávací paměti při volání FormatMessage funkce a vloží řetězce do zprávy.
Řetězec popisu může také obsahovat zástupné symboly pro řetězce parametrů ze souboru zprávy parametru. Zástupné symboly jsou ve formuláři %%n, kde %%1 je nahrazen řetězcem parametru identifikátorem 1 atd. Je však na vás vložit řetězce parametrů do řetězce zprávy, který FormatMessage vrátí. Obvykle voláte FormatMessage získat řetězec zprávy pro událost. Řetězec zprávy pak parsujete pro parametry %%n. Pokud zpráva obsahuje jeden nebo více parametrů, načtěte ParameterMessageFile hodnotu registru pro zdroj. Pro každý parametr v řetězci zprávy získejte identifikátor a předejte ho FormatMessage získat řetězec parametru. Nahraďte parametr v řetězci zprávy řetězcem parametru, který FormatMessage vrácen.
Vložené řetězce
Vložené řetězce jsou volitelné řetězce nezávislé na jazyce, které slouží k vyplnění hodnot zástupných symbolů v řetězcích popisu. Vzhledem k tomu, že řetězce nejsou lokalizovány, je důležité, aby se tyto zástupné symboly používaly pouze k reprezentaci řetězců nezávislých na jazyce, jako jsou číselné hodnoty, názvy souborů, uživatelská jména atd. Délka řetězce nesmí překročit 32 kilobajtů – 1 znaky.
Nepoužívejte k vytvoření většího popisu několik řetězců. Řetězec vložení by se měl považovat za data, nikoli jako text. Například v následujícím příkladu by se pszString1 a pszString2 neměly používat jako vložené řetězce pro pszDescription.
LPSTR pszString1 = "successfully";
LPSTR pszString2 = "not";
LPSTR pszDescription = "The user was %1 added to the database.";
V následujícím příkladu je vhodné použít pszString1 nebo pszString2 pro řetězec vložení v pszDescription.
LPSTR pszString1 = "c:\\testapp1.c";
LPSTR pszString2 = "c:\\testapp2.c";
LPSTR pszDescription = "Access denied. Attempted to open the file %1."