begin process at 2012 05 27 07:09:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers/Disque

 > .NET - CLASSE DE LOG D'EVÈNEMENT

.NET - CLASSE DE LOG D'EVÈNEMENT




 Description

Dans le cadre de développement, il est toujours utile de pouvoir 'logger' les évènements qui surviennent (particulièrement en cas d'erreur). Cela peut se faire via un fichier Texte, mais aussi en écrivant directement dans l'event viewer.
Cette petite classe est un exemple simple et rapide pour réaliser cela.

Source

  • ' Voila la Classe ( LogGenerator.vb )
  • '**********************************************************************************
  • ' $Archive: $
  • ' $Author: $
  • ' $Date: $ $Revision: $
  • ' Description : Classe de Gestion des Logs lors de l'exécution des Fonctions
  • ' *********************************************************************************
  • Imports System.IO
  • Public Class LogGenerator
  • Private _NomFichier As String
  • Private _NomApplication As String
  • Private Const DEFAULT_NOM_APPLICATION As String = "TextLogGenerator"
  • #Region "Liste des Propriétés Publiques"
  • ' -----------------------------------------------------
  • Property NomFichier() As String
  • Get
  • NomFichier = RenvoieCheminFichier()
  • End Get
  • Set(ByVal Value As String)
  • _NomFichier = Value
  • End Set
  • End Property
  • ' -----------------------------------------------------
  • Property NomApplication() As String
  • Get
  • NomApplication = _NomApplication
  • End Get
  • Set(ByVal Value As String)
  • _NomApplication = Value
  • End Set
  • End Property
  • ' -----------------------------------------------------
  • #End Region
  • ' -----------------------------------------------------
  • Public Sub New()
  • ' Constructeur par défaut de la Classe
  • _NomFichier = "Logging.txt"
  • _NomApplication = "Logger"
  • End Sub
  • ' -----------------------------------------------------
  • Public Sub New(ByVal NomApplicationDonne As String, ByVal NomFichierLogDonne As String)
  • ' Constructeur par défaut de la Classe
  • _NomFichier = Trim(NomFichierLogDonne)
  • _NomApplication = Trim(NomApplicationDonne)
  • End Sub
  • ' -----------------------------------------------------
  • Private Function RenvoieCheminFichier() As String
  • ' Renvoie en résultat le chemin complet du fichier
  • Dim TempDefault As String
  • Dim TempNomFichier As String
  • Dim TempPath As String
  • Dim TempDirectory As String
  • TempPath = Environment.CurrentDirectory
  • If Right(TempPath, 1) <> "\" Then
  • TempPath = TempPath & "\"
  • End If
  • TempDefault = TempPath & "Log.txt"
  • If _NomFichier = "" Then
  • Return TempDefault
  • Exit Function
  • End If
  • If Not File.Exists(_NomFichier) Then
  • Try
  • Dim TempInfo As New FileInfo(_NomFichier)
  • TempDirectory = TempInfo.DirectoryName
  • If Not Directory.Exists(TempDirectory) Then
  • TempNomFichier = TempDefault
  • Else
  • TempNomFichier = _NomFichier
  • End If
  • Catch Ex As Exception
  • TempNomFichier = TempDefault
  • End Try
  • Else
  • TempNomFichier = _NomFichier
  • End If
  • Return TempNomFichier
  • End Function
  • ' -----------------------------------------------------
  • Public Sub Log(ByVal TexteALogger As String)
  • ' Enregistrement du texte fourni dans le fichier Log, s'il n'existe pas il le crée,
  • ' sinon il écrit en fin de fichier
  • Dim TempNomFichier As String
  • Dim objWriter As StreamWriter
  • TempNomFichier = RenvoieCheminFichier()
  • If Not File.Exists(TempNomFichier) Then
  • objWriter = File.CreateText(TempNomFichier)
  • Else
  • objWriter = File.AppendText(TempNomFichier)
  • End If
  • Try
  • objWriter.WriteLine(TexteALogger)
  • objWriter.Close()
  • Catch Ex As Exception
  • Err.Raise(Err.Number, , Ex.Message)
  • End Try
  • End Sub
  • ' -----------------------------------------------------
  • Public Function WriteToEventLog(ByVal Entry As String, Optional ByVal EventType As EventLogEntryType = EventLogEntryType.Information) As Boolean
  • ' Ajoute les message donnés directement dans l'Event Log de Windows
  • Dim TempNomSource As String
  • Dim objEventLog As New EventLog
  • TempNomSource = IIf(Trim(_NomApplication) = "", DEFAULT_NOM_APPLICATION, _NomApplication).ToString
  • Try
  • 'Enregistre le message transmis dans l'Event Log en créant un nouveau bloc avec le nom de l'application
  • ' s'il n'existe pas encore
  • If Not objEventLog.SourceExists(TempNomSource) Then
  • objEventLog.CreateEventSource(TempNomSource, "Application")
  • End If
  • objEventLog.Source = TempNomSource
  • objEventLog.WriteEntry(Entry, EventType)
  • Return True
  • Catch
  • Return False
  • End Try
  • End Function
  • ' -----------------------------------------------------
  • Public Sub LogError(ByVal Ex As Exception, Optional ByVal NomProcedure As String = "")
  • ' Log Automatiquement les erreur transmises
  • Dim TempAns As String
  • TempAns = "Exception " & Ex.Message & " survenue"
  • If NomProcedure <> "" Then
  • TempAns = TempAns & " in " & NomProcedure
  • End If
  • TempAns = TempAns & " [" & Now.ToLongDateString & "]"
  • Log(TempAns)
  • End Sub
  • ' -----------------------------------------------------
  • Public Sub Reset()
  • ' Efface le Fichier s'il existe déja
  • Dim sFileName As String
  • sFileName = RenvoieCheminFichier()
  • Try
  • File.Delete(sFileName)
  • Catch
  • End Try
  • End Sub
  • ' -----------------------------------------------------
  • End Class
  • ' -----------------------------------------------------
  • ' Les appels se font de la manière suivante dans un cas pour le stockage en fichier texte d'une erreur survenue :
  • ' On définit le nom du fichier et son chemin complet
  • Private FichierLog As String = "C:\LogAd.log"
  • ' On ajoute le catch d'erreur
  • Try
  • ...
  • Catch ex As Exception
  • Dim MonLog As New LogGenerator("WS_CREATION_COMPTE_AD", FichierLog)
  • MonLog.Log("Erreur dans le Chargement de la liste des Comptes | Message complet : " & ex.Message.ToString & " | Date : " & Date.Now.ToString)
  • Finally
' Voila la Classe ( LogGenerator.vb )

'**********************************************************************************
' $Archive: $ 
' $Author:  $ 
' $Date:  $  $Revision: $
'  Description : Classe de Gestion des Logs lors de l'exécution des Fonctions
' *********************************************************************************

Imports System.IO

Public Class LogGenerator
    Private _NomFichier As String
    Private _NomApplication As String
    Private Const DEFAULT_NOM_APPLICATION As String = "TextLogGenerator"

#Region "Liste des Propriétés Publiques"

    ' -----------------------------------------------------
    Property NomFichier() As String
        Get
            NomFichier = RenvoieCheminFichier()
        End Get
        Set(ByVal Value As String)
            _NomFichier = Value
        End Set
    End Property

    ' -----------------------------------------------------
    Property NomApplication() As String
        Get
            NomApplication = _NomApplication
        End Get
        Set(ByVal Value As String)
            _NomApplication = Value
        End Set
    End Property

    ' -----------------------------------------------------
#End Region

    ' -----------------------------------------------------
    Public Sub New()
        ' Constructeur par défaut de la Classe
        _NomFichier = "Logging.txt"
        _NomApplication = "Logger"
    End Sub

    ' -----------------------------------------------------
    Public Sub New(ByVal NomApplicationDonne As String, ByVal NomFichierLogDonne As String)
        ' Constructeur par défaut de la Classe
        _NomFichier = Trim(NomFichierLogDonne)
        _NomApplication = Trim(NomApplicationDonne)
    End Sub

    ' -----------------------------------------------------
    Private Function RenvoieCheminFichier() As String
        ' Renvoie en résultat le chemin complet du fichier
        Dim TempDefault As String
        Dim TempNomFichier As String
        Dim TempPath As String
        Dim TempDirectory As String

        TempPath = Environment.CurrentDirectory
        If Right(TempPath, 1) <> "\" Then
            TempPath = TempPath & "\"
        End If
        TempDefault = TempPath & "Log.txt"

        If _NomFichier = "" Then
            Return TempDefault
            Exit Function
        End If

        If Not File.Exists(_NomFichier) Then
            Try
                Dim TempInfo As New FileInfo(_NomFichier)
                TempDirectory = TempInfo.DirectoryName

                If Not Directory.Exists(TempDirectory) Then
                    TempNomFichier = TempDefault
                Else
                    TempNomFichier = _NomFichier
                End If
            Catch Ex As Exception
                TempNomFichier = TempDefault
            End Try
        Else
            TempNomFichier = _NomFichier
        End If
        Return TempNomFichier
    End Function

    ' -----------------------------------------------------
    Public Sub Log(ByVal TexteALogger As String)
        ' Enregistrement du texte fourni dans le fichier Log, s'il n'existe pas il le crée, 
        ' sinon il écrit en fin de fichier
        Dim TempNomFichier As String
        Dim objWriter As StreamWriter
        TempNomFichier = RenvoieCheminFichier()
        If Not File.Exists(TempNomFichier) Then
            objWriter = File.CreateText(TempNomFichier)
        Else
            objWriter = File.AppendText(TempNomFichier)
        End If
        Try
            objWriter.WriteLine(TexteALogger)
            objWriter.Close()
        Catch Ex As Exception
            Err.Raise(Err.Number, , Ex.Message)
        End Try
    End Sub

    ' -----------------------------------------------------
    Public Function WriteToEventLog(ByVal Entry As String, Optional ByVal EventType As EventLogEntryType = EventLogEntryType.Information) As Boolean
        ' Ajoute les message donnés directement dans l'Event Log de Windows
        Dim TempNomSource As String
        Dim objEventLog As New EventLog

        TempNomSource = IIf(Trim(_NomApplication) = "", DEFAULT_NOM_APPLICATION, _NomApplication).ToString
        Try
            'Enregistre le message transmis dans l'Event Log en créant un nouveau bloc avec le nom de l'application
            ' s'il n'existe pas encore
            If Not objEventLog.SourceExists(TempNomSource) Then
                objEventLog.CreateEventSource(TempNomSource, "Application")
            End If

            objEventLog.Source = TempNomSource
            objEventLog.WriteEntry(Entry, EventType)
            Return True
        Catch
            Return False
        End Try
    End Function

    ' -----------------------------------------------------
    Public Sub LogError(ByVal Ex As Exception, Optional ByVal NomProcedure As String = "")
        ' Log Automatiquement les erreur transmises
        Dim TempAns As String
        TempAns = "Exception " & Ex.Message & " survenue"
        If NomProcedure <> "" Then
            TempAns = TempAns & " in " & NomProcedure
        End If
        TempAns = TempAns & " [" & Now.ToLongDateString & "]"
        Log(TempAns)
    End Sub

    ' -----------------------------------------------------
    Public Sub Reset()
        ' Efface le Fichier s'il existe déja
        Dim sFileName As String
        sFileName = RenvoieCheminFichier()
        Try
            File.Delete(sFileName)
        Catch
        End Try
    End Sub

    ' -----------------------------------------------------
End Class

' -----------------------------------------------------
' Les appels se font de la manière suivante dans un cas pour le stockage en fichier texte d'une erreur survenue :

' On définit le nom du fichier et son chemin complet

Private FichierLog As String = "C:\LogAd.log"

' On ajoute le catch d'erreur 

        Try
        ...
        Catch ex As Exception
            Dim MonLog As New LogGenerator("WS_CREATION_COMPTE_AD", FichierLog)
            MonLog.Log("Erreur dans le Chargement de la liste des Comptes | Message complet : " & ex.Message.ToString & " | Date : " & Date.Now.ToString)
        Finally


 Conclusion

Bon Coding

Romelard Fabrice (Alias F___)


 Sources du même auteur

Source .NET (Dotnet) SHAREPOINT 2007 - OBTENIR LA LISTE DES WEBPARTS DANS UNE PAG...
Source .NET (Dotnet) SHAREPOINT 2007 - OBTERNIR LA LISTE DES FEATURES D'UN SITE
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES COLLATIONS SHAREPOINT...
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES LANGUES INSTALLÉES DA...
Source .NET (Dotnet) C# - FONCTION TRÈS SIMPLE POUR ENVOYER UN MAIL VIA SMTP

 Sources de la même categorie

Source .NET (Dotnet) IMPORTER UN FICHIER EXCEL DEPUIS UN POSTE ET L'AJOUTER SUR L... par jseblavoie
SERVER.MAPPATH QUI ACCEPTE LES ../ par divlys
UPLOAD D'IMAGES VIA ADODB.STREAM ET SQL SERVER par Nicolas_kojack
LISTING DE FICHIERS ET RÉPERTOIRES (FONCTION RÉCURSIVE) par Warwick
Source avec Zip UTILITAIRE POUR FORCER LE TÉLÉCHARGEMENT D'UN FICHIER SUR UN... par shaiulud

 Sources en rapport avec celle ci

LOG DES ROBOTS QUI PASSENT SUR LE SITE par Chrigou
Source avec Zip Source .NET (Dotnet) EMPÊCHER LES ERREURS DES USERSCONTROLS DE FAIRE PLANTER TOUT... par Nurgle
Source avec Zip Source .NET (Dotnet) EVITER QUE LES ERREURS DES USERCONTROLS, ARRETENT LE FONCTIO... par jesusonline
Source avec Zip Source .NET (Dotnet) DÉCLENCHEMENT D'ÉVÉNEMENT DANS UN CONTROL UTILISATEUR ET REM... par Thanos_the_yopper
Source .NET (Dotnet) DÉCLENCHER UNE ERREUR 404 par jesusonline

Commentaires et avis

Commentaire de thierry51 le 17/11/2004 09:10:27

Parfait. C'est une très bonne base pour gérer le logging de façon simple.
juste un petit oubli :
Imports System.Diagnostics
et attention à donner les droits en écriture sur le répertoire de log.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

log et pwd [ par glopglop ] J'ai le code suivant :&lt;% Set ConnLog=Server.CreateObject("ADODB.Connection")ConnLog.Open DSN_BASESet RsLog=Server.CreateObject("ADODB.Recordset")Rs Erreur de configuration dans mon application ASP.NET [ par megadave ] Bonjour,Des fois lors de generation de mon projet , j'ai cette erreur : Erreur de configuration Description&nbsp;: Une erreur s'est produite lors du cartographie [ par ychraibi ] bonjour,je travail sur un projet pour developper une carte de france et afficher tous les magasins X sur cette cartece projet je doit le realiser avec erreur sur un site web [ par bendsiham ] quelqu'un peut il m'expliquer cette erreur (sur Asp.net )?: The log file for database 'colorado' is full. Back up the transaction log for the databa User Control dynamique et events [ par naej94 ] Bonjour à tous, Je tiens a préciser que je ne maitrise pas trop .NET pour le web. Je cherches à ajouter dynamiquement des controles à une pages, et Suppression dans un GridView [ par pymouse ] Bonjour ! J'ai une erreur lors de la suprresion de la ligne dans ma table. J'ai donc fait un drag'n'draw de ma table dans mon code et la SqlDataSourc Syntaxe SQL [ par Cafekafe ] Bonjour à tous! J'ai un probleme de syntaxe SQL que je n'arrive pas a résoudre car il me semble correct mais peut etre que quelqu'un verra une erreur Erreur 500 [ par silver007 ] J'ai un site Web écrit en Asp framework version ASP.NET v2.0.50727. J'utilise mySQL pour gérer mes données. Le site est configuré sur un serveur Micro Problème erreur sql [ par hugo7 ] Bonjour j'ai une page asp.net contenant un contrôle CreateUserWizard. J'essaye de créer un premier compte pour que vs 2008 me cret automatiquement la [PROBLEME] aide config php my admin [ par decouverte ] Salut à Vous Camarade, J'utilise Wampserveur pour créer mon serveur en localhost. Après un planté j'ai désinstallé Wampserveur. Puis réinstallé le di


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales