Accueil > > > .NET - CLASSE DE LOG D'EVÈNEMENT
.NET - CLASSE DE LOG D'EVÈNEMENT
Information sur la source
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
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
log et pwd [ par glopglop ]
J'ai le code suivant :<% 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 : 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
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GRIDVIEW CHECKBOXGRIDVIEW CHECKBOX par invent001
Cliquez pour lire la suite par invent001 OUTIL MYSQLOUTIL MYSQL par nobla
Cliquez pour lire la suite par nobla
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|