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 / Exemple :
' 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___)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.