locked
EventLog : performances pour obtenir toutes les sources RRS feed

  • Question

  •  

    Bonjour

    Je développe une application qui va lister dans une combo toutes les Sources d'un eventlog donné.

    N'ayant pas trouvé de fonctions du genre EventLog.GetSources(), j'en ai été réduite à parcourir toutes les entries de l'event log, et rajouter moi meme dans un tableau les sources que je trouvais.

    En gros ça donne ça :

     

     

    List<string> Sources = new List<string>();

    EventLog el = new EventLog();

    el.MachineName = ".";

    el.Log = ConfigurationManager.AppSettings["EventLog"];

    foreach (EventLogEntry entry in el.Entries)

    {

    if (!Sources.Contains(entry.Source))

    {

    Sources.Add(entry.Source);

    }

    }

     

     

    Mon soucis c'est que la machine à laquelle je destine cette application contient ennormement de logs, c'est vraiment un gros paquet d'entries qu'il va me falloir parcourir, juste pour obtenir la liste des sources. Du coup c'est très génant, je ne voudrais pas que les utilisateurs aient à attendre 5 minutes que la combo se remplisse... Et puis niveau ressources utilisées sur le serveur en question, ca risque de faire mal, je ne peux pas me le permettre.

     

    Alors je me suis dit "allons voir directement l'API win32 voir si elle contient plus de méthodes, et faisons un wrapper". Malheureusement, l'API win32 ne semble pas plus fournie...

    Bref je suis dans une impasse. Connaissez vous une methode que j'ignorerais, et qui me permettrait d'obtenir la liste des sources de façon optimale ?

     

    Merci

    jeudi 27 septembre 2007 09:36

Toutes les réponses

  • Bonjour,

     

    Parcourez la clé suivante :

     

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\<Journal>\<Sources>

     

    Cordialement

    jeudi 27 septembre 2007 12:56
  •  

    Ah pas mal comme solution je n'y avais pas pensé. Par contre, aurais tu une solution pour récupérer : toutes les entries pour une source donnée ?

     

     

    jeudi 27 septembre 2007 13:31
  • Up ?

     

    lundi 8 octobre 2007 09:37
  • Normalement vous faites :

     

    Extrait de code

    EventLog el = new EventLog("Machine", "Journal", "Source")

    el.Entries......

     

    el.Entries est une collection de toutes les entrées du journal "Journal" pour la source "Source"...

     

    Cordialement

     

    samedi 13 octobre 2007 09:43