Créer des fichiers de log en quelques lignes

Soyez le premier à donner votre avis sur cette source.

Snippet vu 25 960 fois - Téléchargée 28 fois

Contenu du snippet

Ce code est trés simple et vous permet de créer des fichiers de log trés trés facilement.

Il est facilement amèliorable selon les besoins...

On a ici la classe et un exemple d'utilisation.

Source / Exemple :


' importatation du module E/S
Imports System.IO

Module LogMod

'objet de log qui sera unique (singleton)
Private objLog As log4Raid

    'procédure qui sera appeler pour ecrire dans un fichier log (exemple)
    Public Sub EcrireLog(ByVal type As String, ByVal texte As String)
        If (objLog Is Nothing) Then
            objLog = New log4Raid(Environment.CurrentDirectory + "\logs", "Log")
        End If
        objLog.EcrireLog(type, texte)
    End Sub

     'classe de log
    Private Class log4Raid
        'format de la date
        Private date_format As String
        'chemin vers le dossier des logs
        Private path As String
        'nom de base des fichiers de log
        Private base_name As String
        'longeur max avant de changer de numéro de fichier
        Private file_length As Long

        Public Sub New(ByVal p_path As String, ByVal p_base_name As String, Optional ByVal p_file_length As Long = 800000, Optional ByVal p_date_format As String = "dd/MM/yyyy hh:mm:ss")
            path = p_path
            base_name = p_base_name
            file_length = p_file_length
            date_format = p_date_format
        End Sub

        Public Sub EcrireLog(ByVal type As String, ByVal texte As String)
            Try
                'recherche du nom de fichier
                'liste des fichiers du repertoire
                Dim fichiers() As String = Directory.GetFiles(path, "*.txt")
                'definition du nom du fichier
                Dim nomFichier As String = ""
                ' trie des fichiers par ordre alphabétique
                Array.Sort(fichiers)
                'si on a au moins un fichiers
                If (fichiers.Length > 0) Then
                    ' le nom du fichiers sera (temporairement) le dernier de la liste
                    nomFichier = fichiers(fichiers.Length - 1)
                    'récupération des informations du fichier
                    Dim fi As New FileInfo(nomFichier)
                    'si le fichier est supérieur à la taille max on remer le nom du fichier à vide
                    If (fi.Length > file_length) Then
                        nomFichier = ""
                    End If
                End If

                ' si le nom du fichier est vide on va créer un nouveau fichier
                If nomFichier = "" Then
                    nomFichier = path + "\" + base_name + "_" + CStr(fichiers.Length) + ".txt"
                End If
                'ouverture d'un lien vers le fichier
                Dim LogStream As New StreamWriter(nomFichier, True, System.Text.Encoding.UTF8)
                'ecriture sur le fichier
                LogStream.WriteLine(Format(Now(), date_format) + ": " + type + " : " + texte)
                'fermeture du lien vers le fichier
                LogStream.Close()
            Catch ex As Exception
                'erreur, impossible d'ecrire dans le fichier
                MsgBox("Erreur d'écriture dans les fichiers LOG : " + ex.Message)
            End Try
        End Sub
    End Class
End Module

A voir également

Ajouter un commentaire Commentaires
Messages postés
7
Date d'inscription
mercredi 26 novembre 2008
Statut
Membre
Dernière intervention
27 novembre 2009

Bonjour

Quelqu'un pourrait il préciser ce qu'il faut modifier dans ce code pour l'adapter au VB6 ?
@ Raidwan : peux tu le faire stp ? ca ne devrait pas être trop long !

Merci
Messages postés
23
Date d'inscription
jeudi 9 septembre 2004
Statut
Membre
Dernière intervention
10 novembre 2008

@Marech_a :
il suffit de modifier la méthode :
# Public Sub EcrireLog(ByVal type As String, ByVal texte As String)
# If (objLog Is Nothing) Then
# objLog = New log4Raid(Environment.CurrentDirectory + "\logs", "Log")
# End If
# objLog.EcrireLog(type, texte)
# End Sub

la ligne : objLog = New log4Raid(Environment.CurrentDirectory + "\logs", "Log")

et de personaliser l'appel en passant des paramètres que vous voulez,

Ensuite pour l'appeler dans votre code, il suffit simplement d'appeler la méthode EcrireLog()

@Le_Nain27 : Ce code date, il est évidant qu'aujourd'hui je n'écrirai pas la même chose, le fait d'écrire un "module" me parait déjà aberrant. Donc pour répondre à votre question, en fait il faut passer la classe statique (ou shared) et gérer l'appel à Ecrirelog via un singleton, pour après utiliser la méthode avec un syntaxe dans le genre : Log4Raid.EcrireLog("test","test")
Messages postés
4
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
13 janvier 2009

Bonjour,

comment faut-il faire pour implémenter votre code dans un nouveau programme avec Visual Basic 2008 Express?

Merci.
Messages postés
13
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
19 octobre 2006

Radiwan: En déclarant EcrireLog de ta classe en "shared" tu n'aboutis pas au même résultat ?
Messages postés
53
Date d'inscription
dimanche 29 mai 2005
Statut
Membre
Dernière intervention
16 octobre 2006

Pas de mal. Le principal est de s'améliorer...
Afficher les 13 commentaires

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.