L'un des principaux moyens de diagnostiquer les dysfonctionnements dans le fonctionnement d'un logiciel déjà exécuté sur l'ordinateur de l'utilisateur consiste à conserver des journaux d'événements - des journaux. En règle générale, ils enregistrent des informations sur les lancements, ainsi que des informations importantes sur l'état du processus et l'environnement du système en cas de défaillance critique. Vous pouvez créer des journaux à la fois par vos propres moyens et en utilisant les services spéciaux des systèmes d'exploitation.
Il est nécessaire
- - traducteur du langage de programmation utilisé;
- - éventuellement un SDK de plate-forme Windows;
- - éventuellement un package de développement pour la glibc.
Instructions
Étape 1
Analysez les conditions d'utilisation et établissez les exigences pour le sous-système, le composant ou la bibliothèque développé qui créera les journaux. Répondez aux questions sur la ou les plateformes sous lesquelles il devrait fonctionner, quelle sera son API.
Étape 2
Conformément aux fonctionnalités de fonctionnement identifiées et à l'API fournie, créez un modèle pour le sous-système de journalisation. Commencez à mettre en œuvre sa fonctionnalité.
Étape 3
L'option la plus simple pour la journalisation consiste à créer indépendamment des fichiers dans un emplacement déterminé par la configuration de l'application, puis à y écrire des données dans n'importe quel format. Utilisez les fonctions de bibliothèque standard C (fopen, fclose, fwrite), les objets de flux de bibliothèque standard C ++ (ofstream), les classes de framework utilisées (telles que CFile, QFile) ou les fonctions API du système d'exploitation (CreateFile, WriteFile sous Windows).
Étape 4
Implémentez la journalisation à l'aide de l'API syslog sur les systèmes d'exploitation compatibles UNIX. Les fonctions de l'API syslog sont déclarées dans le fichier d'en-tête syslog.h. Connectez-le au bon endroit dans le code source de votre projet.
Étape 5
Connectez-vous au service syslog à l'aide de l'appel de fonction openlog. En paramètres, passez-lui un pointeur vers une chaîne contenant l'identifiant de l'application ou du composant qui va écrire, des drapeaux d'options et un masque d'événements à passer au journal. Utilisez des appels aux fonctions syslog et vsyslog pour ajouter des entrées au journal. Appelez la fonction closelog pour vous déconnecter du service. Un exemple simple de code syslog peut être: openlog ("prefix", LOG_NDELAY | LOG_CONS | LOG_PID, LOG_LOCAL1); syslog (LOG_INFO, "% s", "Info"); syslog (LOG_NOTICE, "% s", " Notice "); closelog (); Il est logique de se connecter à syslog lors de l'initialisation de l'application et de se déconnecter lors de la fermeture.
Étape 6
Sur les systèmes d'exploitation Windows, utilisez l'API EventLog pour ajouter des entrées aux journaux système. Appelez RegisterEventSource pour obtenir le descripteur de journal sur la machine spécifiée. Utilisez ce handle lors de l'appel de la fonction ReportEvent qui écrit dans le journal. Une fois terminé, appelez DeregisterEventSource pour fermer la connexion et libérer les ressources allouées par RegisterEventSource. L'exemple le plus simple de travail avec EventLog pourrait être: HANDLE h =:: RegisterEventSource (NULL, "AnySource"); ASSERT (h! = NULL);:: ReportEvent (h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 3, 0, "Text1Text2Text3", NULL);:: DeregisterEventSource (h); Comme avec syslog, il est logique d'appeler RegisterEventSource au démarrage et DeregisterEventSource à l'arrêt de l'application.