Consommation d’événements (Journal des événements Windows)

Vous pouvez consommer des événements à partir de canaux ou de fichiers journaux. Pour consommer des événements, vous pouvez consommer tous les événements ou spécifier une expression XPath qui identifie les événements que vous souhaitez consommer. Pour déterminer les éléments et les attributs d’un événement que vous pouvez utiliser dans votre expression XPath, consultez Schéma d’événement.

Le journal des événements Windows prend en charge un sous-ensemble de XPath 1.0. Pour plus d’informations sur les limitations, consultez Limitations XPath 1.0.

Les exemples suivants illustrent des expressions XPath simples.

// The following query selects all events from the channel or log file
XPath Query: *

// The following query selects all the LowOnMemory events from the channel or log file
XPath Query: *[UserData/LowOnMemory]

// The following query selects all events with a severity level of 1 (Critical) from the channel or log file
XPath Query: *[System/Level=1]

// The following query shows a compound expression that selects all events from the channel or log file
// where the printer's name is MyPrinter and severity level is 1.
XPath Query: *[UserData/*/PrinterName="MyPrinter" and System/Level=1]

// The following query selects all events from the channel or log file where the severity level is
// less than or equal to 3 and the event occurred in the last 24 hour period.
XPath Query: *[System[(Level <= 3) and TimeCreated[timediff(@SystemTime) <= 86400000]]]

Vous pouvez utiliser les expressions XPath directement lors de l’appel des fonctions EvtQuery ou EvtSubscribe ou utiliser une requête XML structurée qui contient l’expression XPath. Pour les requêtes simples qui interrogent des événements à partir d’une source unique, l’utilisation d’une expression XPath est correcte. Si l’expression XPath est une expression composée qui contient plus de 20 expressions ou si vous interrogez des événements provenant de plusieurs sources, vous devez utiliser une requête XML structurée. Pour plus d’informations sur les éléments d’une requête XML structurée, consultez Schéma de requête.

Une requête structurée identifie la source des événements et un ou plusieurs sélecteurs ou suppresseurs. Un sélecteur contient une expression XPath qui sélectionne des événements à partir de la source et un suppresseur contient une expression XPath qui empêche la sélection d’événements. Vous pouvez sélectionner des événements à partir de plusieurs sources. Si un sélecteur et un suppresseur identifient le même événement, l’événement n’est pas inclus dans le résultat.

Voici une requête XML structurée qui spécifie un ensemble de sélecteurs et de suppresseurs.

<QueryList>
  <Query Id="0">
    <Select Path="Application">
        *[System[(Level <= 3) and 
        TimeCreated[timediff(@SystemTime) <= 86400000]]]
    </Select>
    <Suppress Path="Application">
        *[System[(Level = 2)]]
    </Suppress>
    <Select Path="System">
        *[System[(Level=1  or Level=2 or Level=3) and 
        TimeCreated[timediff(@SystemTime) <= 86400000]]]
    </Select>
  </Query>
</QueryList>

Le jeu de résultats de la requête ne contient pas de instantané des événements au moment de la requête. Au lieu de cela, le jeu de résultats inclut les événements au moment de la requête et contiendra également tous les nouveaux événements qui sont déclenchés qui correspondent aux critères de requête pendant que vous énumérez les résultats.

Notes

L’ordre des événements est conservé pour les événements qui sont écrits par le même thread. Toutefois, il est possible que les événements écrits par des threads distincts sur différents processeurs d’un ordinateur à plusieurs processeurs apparaissent dans l’ordre.

 

Pour plus d’informations sur la consommation d’événements, consultez les rubriques suivantes :

Les outils de l’utilisateur final standard pour l’utilisation d’un événement sont les suivants :

Limitations de XPath 1.0

Le journal des événements Windows prend en charge un sous-ensemble de XPath 1.0. La principale restriction est que seuls les éléments XML qui représentent des événements peuvent être sélectionnés par un sélecteur d’événements. Une requête XPath qui ne sélectionne pas d’événement n’est pas valide. Tous les chemins de sélecteur valides commencent par * ou « Événement ». Tous les chemins d’accès d’emplacement fonctionnent sur les nœuds d’événement et sont composés d’une série d’étapes. Chaque étape est une structure de trois parties : l’axe, le test de nœud et le prédicat. Pour plus d’informations sur ces parties et sur XPath 1.0, consultez XML Path Language (XPath). Le Journal des événements Windows place les restrictions suivantes sur l’expression :

  • Axe : seuls les axes Enfant (par défaut) et Attribut (et son raccourci « @ ») sont pris en charge.
  • Tests de nœud : seuls les noms de nœuds et les tests NCName sont pris en charge. Le caractère « * », qui sélectionne n’importe quel caractère, est pris en charge.
  • Prédicats : toute expression XPath valide est acceptable si les chemins d’accès d’emplacement sont conformes aux restrictions suivantes :
    • Les opérateurs standard OR, AND, =, !=, <=, <, >=, >et les parenthèses sont pris en charge.
    • La génération d’une valeur de chaîne pour un nom de nœud n’est pas prise en charge.
    • L’évaluation dans l’ordre inverse n’est pas prise en charge.
    • Les jeux de nœuds ne sont pas pris en charge.
    • L’étendue de l’espace de noms n’est pas prise en charge.
    • Les nœuds d’espace de noms, de traitement et de commentaire ne sont pas pris en charge.
    • La taille de contexte n’est pas prise en charge.
    • Les liaisons de variables ne sont pas prises en charge.
    • La fonction position et sa référence de tableau abrégée sont prises en charge (sur les nœuds feuilles uniquement).
    • La fonction Band est prise en charge. La fonction effectue un AND au niveau du bit pour deux arguments de nombre entier. Si le résultat du AND au niveau du bit est différent de zéro, la fonction prend la valeur true ; sinon, la fonction prend la valeur false.
    • La fonction timediff est prise en charge. La fonction calcule la différence entre le deuxième argument et le premier argument. L’un des arguments doit être un nombre littéral. Les arguments doivent utiliser la représentation FILETIME. Le résultat est le nombre de millisecondes entre les deux fois. Le résultat est positif si le deuxième argument représente une heure ultérieure ; sinon, c’est négatif. Lorsque le deuxième argument n’est pas fourni, l’heure système actuelle est utilisée.