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

VB.NET Discussion :

[VB.NET] Logging méthode Trace


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut [VB.NET] Logging méthode Trace
    Bonjour,

    Voila je dois créer une classe EntJournal avec une méthode Trace qui prend mon exception EntException (que j'ai créer avant )

    Je dois réaliser un constructeur qui definira le type de journalisation qui seront dans l'app.config avec les clés suivantes:
    <add key = "EntJournal" value= "JournalType= windows;Name=MonAppli"/>
    et

    <add key = "EntJournal" value= "JournalType=Log;Name=MonAppli";Folder=c:/test;SaveUpTo= 30/>
    Dans ces journaux je dois mettre les exceptions de mon appli. pour le fichier log il est sous la forme yyyyMMdd_HHmmss_monappli.log et je dois en conserver que 30 .


    Voila le code que j'ai écrit :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    Public Class EntJournal
     
     
     
        Sub New()
            Dim reponse As String = ""
            reponse = ConfigurationManager.AppSettings.Get("EntJournal")
     
            If reponse.Contains("JournalType=Windows") Then
                Dim NomExe As String = ""
                NomExe = Application.ExecutablePath
                Dim nomAppli
                nomAppli = reponse.Replace("JournalType=Windows;Name=", "")
                EventLog.CreateEventSource(NomExe, nomAppli)
     
            ElseIf reponse.Contains("JournalType=Log") Then
                Dim nomApplitempo As String = reponse.Replace("JournalType=Log;Name=", "")
                nomApplitempo.Split(";")
                Dim nomAppli As String = nomApplitempo(0)
                Dim folderTargetTempo As String = nomApplitempo(1)
                Dim folder As String = folderTargetTempo.Replace("Folder=", "")
                Dim saveupTemporaire As String = ""
                saveupTemporaire = nomApplitempo(2)
                Dim nbLog As Integer = CType(saveupTemporaire.Replace("SaveUpTo=", ""), Integer)
                If System.IO.Directory.Exists(folder) = False Then
                    System.IO.Directory.CreateDirectory(folder)
                End If
                Dim dateLog As String = TextWriter.Instance.nomDufichier(nomAppli)
                Dim objStream As FileStream = New FileStream(folder & dateLog & nomAppli & ".log", FileMode.OpenOrCreate)
                objStream.Close()
                listeFichierLog(folder, nbLog)
     
     
                End If
        End Sub
        Public Sub TraceLine(ByVal ExceptionEnt As EntException)
     
            ' /////////////// Pour écrire dans le fichier log  ////////////////'
            Dim reponse As String = ""
            reponse = ConfigurationManager.AppSettings.Get("EntJournal")
            Dim nomApplitempo As String = reponse.Replace("JournalType=Log;Name=", "")
            nomApplitempo.Split(";")
            Dim nomAppli As String = nomApplitempo(0)
            Dim folderTargetTempo As String = nomApplitempo(1)
            Dim folder As String = folderTargetTempo.Replace("Folder=", "")
            Dim saveupTemporaire As String = ""
            saveupTemporaire = nomApplitempo(2)
            Dim nbLog As Integer = CType(saveupTemporaire.Replace("SaveUpTo=", ""), Integer)
            If System.IO.Directory.Exists(folder) = False Then
                System.IO.Directory.CreateDirectory(folder)
            End If
            Dim DateLog As String = TextWriter.Instance.nomDufichier(nomAppli)
            Dim objStream As FileStream = New FileStream(folder & DateLog & nomAppli & ".log", FileMode.OpenOrCreate)
            Dim objTraceListener As TextWriterTraceListener = New TextWriterTraceListener(objStream)
            Trace.Listeners.Add(objTraceListener)
     
            Dim ligneAEcrire As String = ""
            ligneAEcrire = DateLog & "Nouvelle exception de type" & (ExceptionEnt.TYPE.ToString) & ".Code numéro : " & ExceptionEnt.CODE & " . " & ExceptionEnt.InnerException.Message & ":" & ExceptionEnt.Message
            Trace.WriteLine(ligneAEcrire)
            Trace.AutoFlush = True
            objStream.Close()
     
            ' /////////////// Pour écrire dans le journal windows ////////////////'
            Dim objListener As EventLogTraceListener = New EventLogTraceListener
            Dim objLog As EventLog = New EventLog(Date.Now & "Nouvelle exception de type" & (ExceptionEnt.TYPE.ToString) & ".Code numéro : " & ExceptionEnt.CODE & " . " & ExceptionEnt.InnerException.Message & ":" & ExceptionEnt.Message)
            objListener.EventLog = objLog
     
        End Sub
     
        Private Sub listeFichierLog(ByVal folder As String, ByVal nbfichier As Integer)
            Dim sortie() As String
            sortie = System.IO.Directory.GetFiles(folder)
            If sortie.Count >= nbfichier Then
                Dim fichierASupprimer As String = sortie(30)
                File.Delete(fichierASupprimer)
            End If
        End Sub
     
    End Class
     
     
    Imports System.Globalization
     
    Public Class TextWriter
        Inherits TextWriterTraceListener
     
        Private Shared s_Instance As TextWriter
        Private Shared s_InstanceLocker As Object = New Object
     
        Public Shared ReadOnly Property Instance() As TextWriter
            Get
                SyncLock s_InstanceLocker
                    If (s_Instance Is Nothing) Then
                        s_Instance = New TextWriter
                    End If
                End SyncLock
                Return s_Instance
            End Get
        End Property
     
     
        Public Function nomDufichier(ByVal nomAppli As String) As String
            Dim dateLog As String = ""
     
            dateLog = Date.Now.ToString("yyyyMMdd_HHmmss_")
     
            Return dateLog
        End Function
    End Class
    Qu'en pensez vous ?

    cordialement,
    Kévin

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    J'ai quelques petit soucis... Tout d'abord reponse n'arrive pas récuperer la valeur associé a DRAJournal de type : NullReferenceException

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    Génération de log et écriture dedans ca marche cependant je n'arrive pas a écrire dans le journal windows .. Quelqu'un pourrait- il m'aider ?

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Pour écrire dans le journal d'évènements de Windows, il faut utiliser la méthode EventLog.WriteEntry. Voir aussi ici : COMMENT FAIRE : Écrire dans un journal d'événements à l'aide de Visual Basic .NET (F301279)
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

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

Discussions similaires

  1. [C#.Net] Une méthode pour débugger ?
    Par Ticoche dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/04/2008, 17h47
  2. [VB.NET 2003] méthode "dispose"
    Par Kropernic dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/02/2008, 09h13
  3. LIB de LOG et TRACE
    Par cmoibal dans le forum C
    Réponses: 4
    Dernier message: 24/01/2008, 18h29
  4. log archive trace
    Par MIMO_MAK dans le forum Administration
    Réponses: 4
    Dernier message: 15/01/2008, 11h09
  5. [2.0] ADO.NET : DataTable : méthode Copy : régression ?
    Par damz dans le forum Accès aux données
    Réponses: 1
    Dernier message: 11/10/2006, 18h46

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