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 :

[C#] Comment implémenter System.Diagnostics.Trace ?


Sujet :

C#

  1. #1
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut [C#] Comment implémenter System.Diagnostics.Trace ?
    Salut à toutes et à tous !

    Je veux créer un fichier journal de mon application.

    Dans le fichier App.config, j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0" encoding="utf-8" ?>
     <configuration>
      <system.diagnostics>
        <trace autoflush="false" indentsize="4">
            <listeners>
                <add name="myListener"
     type="System.Diagnostics.TextWriterTraceListener"
     initializeData="c:\myListener.log" />
                <remove type="System.Diagnostics.DefaultTraceListener"/>
            </listeners>
        </trace>
      </system.diagnostics>
     </configuration>
    (exemple de MSDN).

    Puis, dans mon appli winform, j'ai mis pour test
    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
     
    #define TRACE
     
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data ;
    using System.Diagnostics ;
    using System.Configuration ;
     
    ...
     
            [STAThread]
            static void Main() 
            {
                System.Diagnostics.Debug.WriteLine("La trace contient " +
     Trace.Listeners.Count + " listener(s).") ;
     
                foreach(TraceListener tl in Trace.Listeners)
                    System.Diagnostics.Debug.WriteLine("\t" + tl.Name) ;
     
                Trace.WriteLine("Démarrage de l'application") ;
     
                Application.Run(new FenetrePrincipale()) ;
            }
    Mais rien ne s'inscrit dans mon fichier log...

    Citation Envoyé par Sortie
    La trace contient 2 listener(s).
    Default
    myListener
    Démarrage de l'application
    Je ne comprends par pourquoi le TraceListener Default existe toujours étant donné le paramètres du fichier de config.
    Je ne comprends pas non plus pourquoi rien ne s'affiche dans mon fichier log.

    Est-ce que quelqu'un voit où se situe mon erreur :

  2. #2
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    Trace et Debug ont un listener par defaut qui est DefaultTraceListener qui affiche les messages sur la fenetre de sortie, donc tt est normal ici.

    Pour ton fichier, je jete un oeil ...

    @+

  3. #3
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Citation Envoyé par freddyboy
    Trace et Debug ont un listener par defaut qui est DefaultTraceListener qui affiche les messages sur la fenetre de sortie, donc tt est normal ici.

    Pour ton fichier, je jete un oeil ...

    @+
    pour ton aide

  4. #4
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    tu peux me donner le lien MSDN stp ?

    @+

  5. #5
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Pour le fichier de configuration, c'est la classe DefaultTraceListener, pour le reste c'est la classe Trace.

  6. #6
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    Citation Envoyé par Kcirtap
    Pour le fichier de configuration, c'est la classe DefaultTraceListener, pour le reste c'est la classe Trace.
    ok merci.

    tu as essayé avec l'exemple complet ?
    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
     
    <configuration>
     <system.diagnostics>
      <switches>
       <add name="MagicTraceSwitch" value="3" />
      </switches>
      <trace autoflush="false" indentsize="4">
       <listeners>
        <add name="myListener"
     type="System.Diagnostics.TextWriterTraceListener"
     initializeData="c:\myListener.log" />
        <!-- You must supply a valid fully qualified assembly name here. --> 
        <remove type="Assembly text name, Version, Culture,
     PublicKeyToken"/> 
       </listeners>
      </trace>
     </system.diagnostics>
    </configuration>
    @+

  7. #7
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Citation Envoyé par freddyboy
    tu as essayé avec l'exemple complet ?
    Oui, bien sûr. Mais rien n'y fait...

    Par contre, le fichier vide est créé à chaque lancement de mon programme.

  8. #8
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    et avec AutoFlush à true ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <trace autoflush="true" indentsize="4">
    @+

  9. #9
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Citation Envoyé par freddyboy
    et avec AutoFlush à true ?
    Je m'incline,

    C'est bien de ce paramètre que venait le problème.

    Mais j'ai quelques scrupules à écrire du code sans le comprendre, aurais-tu trouvé une doc sur le principe des traces (à part MSDN) :

    Merci beaucoup pour le temps que tu m'as consacré.

    Bonne journée

  10. #10
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    non pas vraiment j'ai simplement regardé l'exemple et comparer avec ton code et je me suis demandé pourquoi cela ne marchait pas et apres je me suis souvenu qu'il fallait fixer la property AutoFlush à true ou appeler la methode Flush() avant chaque ecriture dans le listener.

    Voila pas plus pas moins, comptent pour toi que cela fonctionne.

    @+

  11. #11
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Citation Envoyé par freddyboy
    ... qu'il fallait fixer la property AutoFlush à true ou appeler la methode Flush() avant chaque ecriture dans le listener.
    Euh c'est pas après chaque ecriture dans le listener.

    La je donne mon avis à moi : Flush provoque l'écriture du buffer dans le fichier. AutoFlush ben comme sont non l'indique le fait automatiquement. Si tu ne fais pas de flush, tes messages restent en mémoire dans un cache et ne sont jamais écrit.

  12. #12
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    Citation Envoyé par jab
    Euh c'est pas après chaque ecriture dans le listener.
    effectivement j'ai été un peu vite ...

    @+

  13. #13
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    à tous pour votre aide.

    Tout fonctionne parfaitement.


    Bon début de semaine

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

Discussions similaires

  1. Activer les traces system.diagnostics.trace
    Par soazig dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 04/05/2015, 10h06
  2. Réponses: 3
    Dernier message: 11/04/2013, 16h14
  3. [C#][2.0] Traces avec System.Diagnostics.Trace
    Par slopera dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/02/2006, 09h51
  4. Comment bloquer la Date() System ???
    Par samlepiratepaddy dans le forum Access
    Réponses: 15
    Dernier message: 27/11/2005, 18h44
  5. Réponses: 10
    Dernier message: 01/06/2005, 11h30

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