Utilisation de System.Diagnostics.EventLog

Résolu
guze Messages postés 6 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 11 mai 2007 - 14 avril 2007 à 13:15
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 14 avril 2007 à 17:16
Bonjour,


Je cherche à exporter les différents journaux windows (observateur d'evt) vers une base SQL, ce qui ne parait pas exceptionnel.


Je
travaille donc avec un compossant eventlog, je me "connect" bien sur
les journaux, j'arrive même à récupérer l'ensemble des infos voulus
sauf une, pourtant majeur :


l' Event ID (le numéro d'evenement de l'erreur)


j'essaye
d'utiliser instanceid mais l'information renvoyé n'est pas bonne (ex:
pour une erreur 1074 il me renvoir une info du type 237651456908 !! .) Mais peut être ne faut-il pas utiliser cette propriété ?


Je jette ci-dessous un bout de code pour faciliter la compréhenion de mon pb :


#Imports System.Diagnostics


      Dim ev As New EventLog("System", System.Environment.MachineName)
        Dim entry As EventLogEntry
        Dim EntLog, EntCategory, EntUser, EntType, EntMessage, EntComputerName, EntDate, EntTime, EntSource, EntEvID As String

        For Each entry In ev.Entries
            EntType = entry.EntryType.ToString
            EntMessage = entry.Message
            EntComputerName = entry.MachineName
            EntDate = entry.TimeWritten.Date.ToShortDateString
            EntTime = entry.TimeWritten.TimeOfDay.ToString
            EntSource = entry.Source
            EntUser = entry.UserName
            EntEvID = entry.InstanceId
            EntCategory = entry.Category.ToString
            EntLog = ev.LogDisplayName


            '...


        next




Si qqun à déjà eu ce pb merci par avance pour le coup de pouce.




Bon week

6 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 avril 2007 à 13:42
Essaye avec EntEvID = entry.InstanceId And &H3FFFFFFF

Et regarde dans l'aide sur la propriété InstanceID et particulièrement ce qui est dit dans la partie NOTE

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
guze Messages postés 6 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 11 mai 2007
14 avril 2007 à 14:01
Super,

Merci Casy, super rapide en plus
Mais alors pourquoi rajouter And &H3FFFFFFF, là j'ai pas le niveau pour comprendre.
Si tu as qq explication je suis preneur.
Tout fonctionne nickel

Merki encore.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 avril 2007 à 14:15
ALors si tu as regardé dans l'aide dans la partie note, tu as pu lire que la valeur de EventID est en fait la valeur de InstanceID avec les 2 bits de poid fort masqués, c'est à dire forcé à 0.
En effet, 2 évènements similaires epuvent avoir le même EventID mais avoir tout de même un ID différent. C'est en fait les 2 bits de poid fort qui font la différence.

Même si tu pourrais utiliser la propriété EventID, celle ci est déclaré obsolete, il vaut mieux donc passer par la propriété InstanceID avec une gymnastique pour  récupérer l'EventID -> masquer les 2 bits qui nous gènent.
Sachant que la valeur est un long 32 bits (Integer en .Net), la représentation en binaire sera :
InstanceID : XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
EventID :    00XXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
et donc pour passer de l'instanceID au EventID il faut faire un masque (un Et logique) avec
Masque :     00111111 11111111 11111111 11111111     soit &h3F FF FF FF en hexa

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 avril 2007 à 14:17
Si tu ne comprend pas ou ne maitrise pas les histoires de bits, de masques, etc ...., je te conseille de recherche des renseignements ou des cours sur l'Algèbre de Boole, qui est la base du monde numérique et donc de l'informatique.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
guze Messages postés 6 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 11 mai 2007
14 avril 2007 à 17:03
Merci pour toutes ces explications.
J'ai apparenté ça au découpage d'une adresse IP (qui est mon coeur de métier ) et un wildmask.
En tous cas merci encore.
A une prochaine.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 avril 2007 à 17:16
c'est effectivement un peu le même principe entre l'adresse IP et le masque

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Rejoignez-nous