IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Trace et Mon propre journal d'evenement


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut Trace et Mon propre journal d'evenement
    Bonjour,

    je viens de lire l'article sur la gestion des logs. J'ai bien compris (je crois) le principe de Trace et Debug.

    Mais voilà, je sais que je peux créer mon propre journal d'evenement avec Event.CreateEventSource(). Mais je n'ai pas trouvé le moyen d'utiliser Trace avec MON journal d'évènement. J'ai l'impression que c'est impossible. Trace écrit forcément dans le journal d'Application?

    Par avance, merci.

    Alex

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Tiré de mon projet ( DreamShield ) :
    Crée un event log nommé "DreamShield.PackageInstallerProvider" et le rajoute dans les sorties de Trace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    const string logName = "DreamShield.PackageInstallerProvider";
    #if(FILE_EVENT_LOG)
                LogsManager.DeleteOldLogs();
                FileInfo n_log = LogsManager.NewLog(logName);
                TextWriterTraceListener listenner = new TextWriterTraceListener(n_log.FullName);
                listenner.TraceOutputOptions = TraceOptions.DateTime | TraceOptions.ThreadId;
     
                Trace.Listeners.Add(listenner);
                Trace.AutoFlush = true;
    #else
                EventLog DreamShieldLog = null;
                if (!EventLog.Exists(logName))
                {
     
                    EventLog.CreateEventSource("DreamShield Application Installer", logName);
                    DreamShieldLog = new EventLog(logName);
                    DreamShieldLog.MaximumKilobytes = 4 * 1024; /* 4 Mo */
                }
                else
                {
                    DreamShieldLog = new EventLog(logName);
                }
     
                DreamShieldLog.Source = "Provider- " + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString();
                DreamShieldLog.OverflowAction = OverflowAction.OverwriteAsNeeded;
                EventLogTraceListener dsEventLog = new EventLogTraceListener(DreamShieldLog);
                Trace.Listeners.Add(dsEventLog);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Merci bien,

    je vais regarder ça mais pourrais tu m'expliquer brièvement le code? Déjà (et je suis désolé de poser cette question), à quoi correspond le #IF(FILE_EVENT_LOG), je connaissais le #IF tout court.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Sinon, log4net fait cela très bien

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par alexking2005 Voir le message
    à quoi correspond le #IF(FILE_EVENT_LOG), je connaissais le #IF tout court.
    Ouille, oublie les #if( en fait c'est pour la compilation conditionnelle, enfin bref ). Donc ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    const string logName = "DreamShield.PackageInstallerProvider";
                EventLog DreamShieldLog = null;
                if (!EventLog.Exists(logName))
                {
     
                    EventLog.CreateEventSource("DreamShield Application Installer", logName);
                    DreamShieldLog = new EventLog(logName);
                    DreamShieldLog.MaximumKilobytes = 4 * 1024; /* 4 Mo */
                }
                else
                {
                    DreamShieldLog = new EventLog(logName);
                }
     
                DreamShieldLog.Source = "Provider- " + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString();
                DreamShieldLog.OverflowAction = OverflowAction.OverwriteAsNeeded;
                EventLogTraceListener dsEventLog = new EventLogTraceListener(DreamShieldLog);
                Trace.Listeners.Add(dsEventLog);
    Explications :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    const string logName = "DreamShield.PackageInstallerProvider";
                EventLog DreamShieldLog = null;
    Nom de ton log, met ici le nom de ton application

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
                if (!EventLog.Exists(logName))
                {
     
                    EventLog.CreateEventSource("DreamShield Application Installer", logName);
                    DreamShieldLog = new EventLog(logName);
                    DreamShieldLog.MaximumKilobytes = 4 * 1024; /* 4 Mo */
                }
    Si le log n'existe pas encore, il faut le créer. Ensuite, on définit sa taille maximale à 4 Mo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                else
                {
                    DreamShieldLog = new EventLog(logName);
                }
    Sinon, on ouvre le log existant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                DreamShieldLog.Source = "Provider- " + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString();
    La propriété Source permet d'identifier qui écrit dans le log. Dans mon cas, j'ai voulu l'identifier avec la date actuelle afin de pouvoir savoir sans trop de mal à quel moment à eu lieu l'évènement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                DreamShieldLog.OverflowAction = OverflowAction.OverwriteAsNeeded;
    Lorsque le log est plein, on indique à Windows de remplacer les plus vielles entrées par les nouvelles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                EventLogTraceListener dsEventLog = new EventLogTraceListener(DreamShieldLog);
    On crée la sortie qui sera utilisée par Trace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                Trace.Listeners.Add(dsEventLog);
    On rajoute notre log dans les sorties de Trace afin qu'il soit utilisé à chaque appel des fonctions de la classe Trace ... et voilà ...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Super, merci c'est tres clair. En fait je savais creer mon propre log, c'est cette ligne qui fait la difference:
    EventLogTraceListener dsEventLog = new EventLogTraceListener(DreamShieldLog);

    Merci encore.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Sinon, log4net fait cela très bien
    Ouaip !
    Ben ca m'intéresse que tu me montres comment, parce que je n'arrive pas à logguer dans le journal des événements
    Si tu as un exemple simple qui marche, je prends

    Merci de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. crèè mon propre evenement
    Par TheBlackReverand dans le forum Windows Forms
    Réponses: 11
    Dernier message: 09/01/2008, 15h54
  2. [C#] Comment passer mon propre objet à la méthode Web ?
    Par mimibobo dans le forum Services Web
    Réponses: 6
    Dernier message: 05/10/2006, 10h08
  3. en configurant mon easyphp j'ai bloqué mon propre IP
    Par boogieboy dans le forum Apache
    Réponses: 2
    Dernier message: 02/04/2006, 19h14
  4. Réponses: 4
    Dernier message: 13/08/2005, 10h20
  5. [apache] probleme d'accès à mon propre serveur
    Par sunfunfree dans le forum Apache
    Réponses: 6
    Dernier message: 15/02/2005, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo