Configuration et démarrage d’une session de journal automatique

La session de suivi d’événements AutoLogger enregistre les événements qui se produisent au début du processus de démarrage du système d’exploitation. Les applications et les pilotes de périphérique peuvent utiliser la session AutoLogger pour capturer des traces avant que l’utilisateur ne se connecte. Notez que certains pilotes de périphérique, tels que les pilotes de périphérique de disque, ne sont pas chargés au moment où la session AutoLogger commence.

L’autologger diffère de l’enregistreur d’événements global des manières suivantes :

  • Vous pouvez spécifier une ou plusieurs sessions de journaliseur automatique (l’enregistreur d’événements global était une seule session dans laquelle tout le monde a journalisé des événements).
  • Le journal automatique envoie une notification d’activation aux fournisseurs au démarrage de la session (l’enregistreur d’événements global n’a pas envoyé de notification d’activation aux fournisseurs, les fournisseurs ont donc dû compter sur d’autres moyens pour savoir si la session Global Logger a été démarrée afin de commencer la journalisation des événements).
  • AutoLogger ne prend pas en charge la journalisation des événements de l’enregistreur d’événements du noyau NT (voir le membre EnableFlags de EVENT_TRACE_PROPERTIES). Pour journaliser les événements de l’enregistreur d’événements du noyau NT, vous devez utiliser l’enregistreur d’événements global.

Pour plus d’informations sur la seesion Global Logger, consultez Configuration et démarrage de la session d’enregistreur d’événements globaux.

Notes

ETW prend en charge l’autologger sur Windows Vista et versions ultérieures. Utilisez l’enregistreur d’événements globaux sur des systèmes d’exploitation antérieurs.

Vous utilisez le Registre pour configurer la session AutoLogger. Ajoutez la clé de Registre suivante, si elle n’est pas déjà présente :

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger

Sous la clé Autologger , créez une clé pour chaque session AutoLogger que vous souhaitez configurer, comme illustré dans l’exemple suivant.

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger
                  \Logger Session A
                  \Logger Session B
                  \Logger Session C

Pour chaque session, créez une clé pour chaque fournisseur que vous souhaitez activer pour la session. Utilisez le GUID du fournisseur comme clé.

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger
                  \Logger Session A
                     \{ProviderGuid1}
                     \{ProviderGuid2}
                  \Logger Session B
                  \Logger Session C

Le tableau suivant décrit les valeurs que vous pouvez définir pour chaque session AutoLogger. Vous devez disposer de privilèges d’administrateur pour spécifier ces valeurs de Registre. Les valeurs Start et Guid sont les seules valeurs requises pour démarrer la session AutoLogger . toutes les autres valeurs ont des paramètres par défaut qui sont utilisés si la valeur n’est pas présente dans le Registre. En règle générale, vous devez utiliser les valeurs par défaut. Si vous spécifiez une valeur que ETW ne peut pas prendre en charge, ETW la remplace.

Valeur Type Description
BufferSize REG_DWORD Taille de chaque mémoire tampon, en kilo-octets. Doit être inférieur à un mégaoctet. ETW utilise la taille de la mémoire physique pour calculer cette valeur.
ClockType REG_DWORD Minuteur à utiliser lors de la journalisation de l’horodatage pour chaque événement.
  • 1 = valeur du compteur de performances (haute résolution)
  • 2 = Minuteur système
  • 3 = compteur de cycle du processeur
Pour obtenir une description de chaque type d’horloge, consultez le membre ClientContext de WNODE_HEADER.
La valeur par défaut est 1 (valeur du compteur de performances) sur Windows Vista et versions ultérieures. Avant Windows Vista, la valeur par défaut est 2 (minuteur système).
DisableRealtimePersistence REG_DWORD Pour désactiver la persistance en temps réel, définissez cette valeur sur 1. La valeur par défaut est 0 (activée) pour les sessions en temps réel.
Si la persistance en temps réel est activée, les événements en temps réel qui n’ont pas été remis au moment de l’arrêt de l’ordinateur sont conservés. Les événements sont ensuite remis au consommateur la prochaine fois qu’il se connecte à la session.
FileCounter REG_DWORD Ne définissez pas ou ne modifiez pas cette valeur. Cette valeur est le numéro de série utilisé pour incrémenter le nom du fichier journal si FileMax est spécifié. Si la valeur n’est pas valide, 1 est supposé.
FileName REG_SZ Chemin complet du fichier journal. Le chemin d’accès à ce fichier doit exister. Le fichier journal est un fichier journal séquentiel. Le chemin d’accès est limité à 1 024 caractères.
Si FileName n’est pas spécifié, les événements sont écrits dans %SystemRoot%\System32\LogFiles\WMI<sessionname.etl>.
FileMax REG_DWORD Nombre maximal d’instances du fichier journal créé par ETW. Si le fichier journal spécifié dans FileName existe, ETW ajoute la valeur FileCounter au nom de fichier. Par exemple, si le nom de fichier journal par défaut est utilisé, le formulaire est %SystemRoot%\System32\LogFiles\WMI<nom_>session.etl. NNNN.
La première fois que l’ordinateur est démarré, le nom de fichier est <sessionname.etl.0001>, la deuxième fois que le nom de fichier est <sessionname.etl.0002>, et ainsi de suite. Si FileMax a la valeur 3, au quatrième redémarrage de l’ordinateur, ETW réinitialise le compteur à 1 et remplace <sessionname.etl.0001>, s’il existe.
Le nombre maximal d’instances du fichier journal prises en charge est de 16.
N’utilisez pas cette fonctionnalité avec le mode fichier journal EVENT_TRACE_FILE_MODE_NEWFILE .
FlushTimer REG_DWORD Fréquence à laquelle, en secondes, les tampons de trace sont vidés de force. La durée minimale de vidage est de 1 seconde. Ce vidage forcé s’ajoute au vidage automatique qui se produit lorsqu’une mémoire tampon est saturée et lorsque la session de trace s’arrête.
Dans le cas d’un enregistreur d’événements en temps réel, la valeur zéro (valeur par défaut) signifie que l’heure de vidage est définie sur 1 seconde. Un journal en temps réel est lorsque LogFileMode est défini sur EVENT_TRACE_REAL_TIME_MODE.
La valeur par défaut est 0. Par défaut, les mémoires tampons sont vidées uniquement lorsqu’elles sont pleines.
Guid REG_SZ Chaîne qui contient un GUID qui identifie la session de manière unique. Cette valeur est requise.
LogFileMode REG_DWORD Spécifiez un ou plusieurs modes de journalisation. Pour connaître les valeurs possibles, consultez Constantes du mode de journalisation. La valeur par défaut est EVENT_TRACE_FILE_MODE_SEQUENTIAL. Au lieu d’écrire dans un fichier journal, vous pouvez spécifier EVENT_TRACE_BUFFERING_MODE ou EVENT_TRACE_REAL_TIME_MODE.
La spécification de EVENT_TRACE_BUFFERING_MODE permet d’éviter le coût de vidage du contenu de la session sur le disque lorsque le système de fichiers devient disponible.
Notez que l’utilisation de EVENT_TRACE_BUFFERING_MODE amène le système à ignorer la valeur MaximumBuffers , car la taille de la mémoire tampon est plutôt le produit de MinimumBuffers et BufferSize.
Les sessions AutoLogger ne prennent pas en charge le mode de journalisation EVENT_TRACE_FILE_MODE_NEWFILE .
Si EVENT_TRACE_FILE_MODE_APPEND est spécifié, BufferSize doit être fourni explicitement et doit être le même dans l’enregistreur d’événements et le fichier ajouté.
MaxFileSize REG_DWORD Taille de fichier maximale du fichier journal, en mégaoctets. La session est fermée lorsque la taille maximale est atteinte, sauf si vous êtes en mode fichier journal circulaire. Pour ne spécifier aucune limite, définissez la valeur sur 0. La valeur par défaut est 100 Mo, si elle n’est pas définie. Le comportement qui se produit lorsque la taille de fichier maximale est atteinte dépend de la valeur de LogFileMode.
MaximumBuffers REG_DWORD Nombre maximal de mémoires tampons à allouer. En règle générale, cette valeur correspond au nombre minimal de mémoires tampons plus vingt. ETW utilise la taille de la mémoire tampon et la taille de la mémoire physique pour calculer cette valeur. Cette valeur doit être supérieure ou égale à la valeur de MinimumBuffers.
MinimumBuffers REG_DWORD Nombre minimal de mémoires tampons à allouer au démarrage. Le nombre minimal de mémoires tampons que vous pouvez spécifier est de deux tampons par processeur. Par exemple, sur un seul ordinateur processeur, le nombre minimal de mémoires tampons est de deux.
Start REG_DWORD Pour que la session AutoLogger démarre la prochaine fois que l’ordinateur est redémarré, définissez cette valeur sur 1 ; sinon, définissez cette valeur sur 0.
État REG_DWORD Status de démarrage de l’autologger. Si le journal automatique n’a pas pu démarrer, la valeur de cette clé est le code d’erreur Win32 approprié. Si l’autologger a démarré, la valeur de cette clé est ERROR_SUCCESS (0).
Démarrage REG_DWORD Cette fonctionnalité ne doit pas être utilisée en dehors des scénarios de débogage.
Si cette clé de Registre est définie sur 1, la journalisation automatique est démarrée plus tôt que la normale lors de l’initialisation du noyau, ce qui lui permet de capturer des événements pendant l’initialisation de nombreux sous-systèmes importants du noyau. Toutefois, l’activation de cette option a un impact négatif sur les heures de démarrage et impose des restrictions supplémentaires sur la journalisation automatique. Si cette fonctionnalité est activée, le GUID de session autologger doit être renseigné et de nombreux autres paramètres de journal automatique peuvent ne pas fonctionner.
Cette clé est prise en charge sur Windows Server 2022 et versions ultérieures.

Le tableau suivant décrit les valeurs que vous pouvez définir pour chaque fournisseur que vous souhaitez activer pour votre session. Vous devez disposer de privilèges d’administrateur pour spécifier ces valeurs de Registre. Si vous spécifiez une valeur que ETW ne peut pas prendre en charge, ETW la remplace.

Valeur Type Description
Activé REG_DWORD Détermine si le fournisseur est activé. Pour activer le fournisseur, définissez cette valeur sur 1. Pour désactiver le fournisseur, définissez cette valeur sur 0. La valeur par défaut est 0.
EnableFlags REG_DWORD Valeur définie par le fournisseur qui spécifie la classe d’événements pour lesquelles le fournisseur génère des événements. Pour plus d’informations, consultez le paramètre EnableFlags de la fonction EnableTrace . Spécifiez ce nom de valeur si le fournisseur ne prend pas en charge MatchAnyKeyword ou MatchAllKeyword.
EnableLevel REG_DWORD Valeur définie par le fournisseur qui spécifie le niveau de détail inclus dans l’événement. Par exemple, vous pouvez utiliser cette valeur pour indiquer le niveau de gravité des événements (information, avertissement, erreur) générés par le fournisseur. Pour obtenir la liste des niveaux prédéfinis, consultez le paramètre de niveau de la fonction EnableTraceEx .
EnableProperty REG_DWORD Utilisez cette valeur pour inclure un ou plusieurs des éléments suivants dans le fichier journal :
  • EVENT_ENABLE_PROPERTY_SID (0x00000001) = Inclure dans les données étendues l’identificateur de sécurité (SID) de l’utilisateur.
  • EVENT_ENABLE_PROPERTY_TS_ID (0x00000002) = Incluez dans les données étendues l’identificateur de session de terminal.
  • EVENT_ENABLE_PROPERTY_STACK_TRACE (0x00000004) = Incluez dans les données étendues une trace de pile d’appels pour les événements écrits à l’aide d’EventWrite.
  • EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 (0x00000010) = Filtre tous les événements qui n’ont pas de mot clé non nul spécifié.
  • EVENT_ENABLE_PROPERTY_PROVIDER_GROUP (0x00000020) = Indique que cet appel à EnableTraceEx2 doit activer un groupe de fournisseurs plutôt qu’un fournisseur d’événements individuel.
  • EVENT_ENABLE_PROPERTY_PROCESS_START_KEY (0x00000080) = Inclure la clé de démarrage du processus dans les données étendues.
  • EVENT_ENABLE_PROPERTY_EVENT_KEY (0x00000100) = Inclure la clé d’événement dans les données étendues.
  • EVENT_ENABLE_PROPERTY_EXCLUDE_INPRIVATE (0x00000200) = Filtre tous les événements marqués comme un événement InPrivate ou provenant d’un processus marqué comme InPrivate.
Pour plus d’informations sur ces éléments, consultez EnableProperty de la structure ENABLE_TRACE_PARAMETERS .
MatchAnyKeyword REG_QWORD Masque de bits de mots clés qui déterminent la catégorie d’événements que vous souhaitez que le fournisseur écrive. Le fournisseur écrit l’événement si l’un des bits mot clé de l’événement correspond à l’un des bits définis dans ce masque. Pour spécifier que le fournisseur écrit tous les événements, définissez cette valeur sur zéro. Pour obtenir un exemple, consultez la section Remarques de la fonction EnableTraceEx .
MatchAllKeyword REG_QWORD Ce masque de bits est facultatif. Ce masque restreint davantage la catégorie d’événements que vous souhaitez que le fournisseur écrive. Si le mot clé de l’événement répond à la condition MatchAnyKeyword, le fournisseur écrit l’événement uniquement si tous les bits de ce masque existent dans le mot clé de l’événement. Ce masque n’est pas utilisé si MatchAnyKeyword est égal à zéro. Pour obtenir un exemple, consultez la section Remarques de la fonction EnableTraceEx .

Une fois le Registre modifié, la session AutoLogger démarre la prochaine fois que l’ordinateur est redémarré. La session AutoLogger appelle la fonction EnableTraceEx pour activer les fournisseurs.

Les sessions AutoLogger augmentent le temps de démarrage du système et doivent être utilisées avec parcimonie. Les services qui souhaitent capturer des informations pendant le processus de démarrage doivent envisager d’ajouter une logique de contrôleur à lui-même au lieu d’utiliser la session AutoLogger.

Pour arrêter une session AutoLogger, appelez la fonction ControlTrace . Le nom de session que vous passez à la fonction est le nom de la clé de Registre que vous avez utilisée pour définir la session dans le Registre.

Pour plus d’informations sur le démarrage d’une session de suivi d’événements, consultez Configuration et démarrage d’une session de suivi d’événements.

Pour plus d’informations sur le démarrage d’une session d’enregistreur d’événements privés, consultez Configuration et démarrage d’une session d’enregistreur d’événements privés.

Pour plus d’informations sur le démarrage d’une session d’enregistreur d’événements de noyau NT, consultez Configuration et démarrage de la session d’enregistreur d’événements du noyau NT.

Configuration et démarrage d’une session d’enregistreur d’événements privés

Configuration et démarrage d’une session SystemTraceProvider

Configuration et démarrage d’une session de suivi d’événements

Configuration et démarrage de la session d’enregistreur d’événements du noyau NT

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

PAYLOAD_FILTER_PREDICATE

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

Mise à jour d’une session de suivi des événements