IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

VBA Monologger

VBA Monologger est une solution open source de gestion de log dans l'écosystème VBA.

📕 Consulter la documentation officiel : https://6i-software.github.io/vba-monologger/

Principales fonctionnalités :

  • Personnalisez le format de journalisation pour définir la manière dont les messages de journal sont structurés et affichés.
  • Spécifiez la destination des logs (vers la console VBA (a.k.a. Excel's immediate window), vers la console Windows (cmd.exe) avec ou sans prise en charge des couleurs ANSI, vers un fichier, ...) et configurez les conditions dans lesquelles les événements de journalisation sont déclenchés en fonction de vos propres critères.
  • Gère 8 niveaux de gravité standard pour classer l'importance des messages de log, conformément à la norme PSR-3.
  • Enrichissez les enregistrements de journaux avec des préprocesseurs, permettant l'ajout de contexte, la transformation de données ou la personnalisation des entrées de journal en fonction de besoins spécifiques (par exemple ajouter l'utilisation du processeur ou de la mémoire, générer un UID pour chaque session, ajouter des balises... et plus encore)
  • Utilisez les loggers déjà configuré fournis dans la librairie (LoggerConsoleVBA, LoggerConsole ou LoggerFile) pour une utilisation de base, ou créez votre propre système de journalisation personnalisé
  • Développez facilement votre propre formateur, gestionnaire et préprocesseurs personnalisés pour adapter le système de journalisation à vos besoins spécifiques. En créant des styles de formatage uniques, des gestionnaires spécialisés et une logique de prétraitement personnalisée, vous pouvez améliorer la fonctionnalité et la flexibilité de votre configuration de journalisation, en vous assurant qu'elle répond aux exigences précises de vos applications et flux de travail.
Nos ressources disponibles
Installation

1. Télécharger la librairie (Excel Add-in xlam file) 6i_VBA-Monologger.xlam depuis le dépôt Github : https://github.com/6i-software/vba-monologger
2. Ajouter ce fichier xlam en tant que référence de votre projet VBA (Tools > References)

3. Et voila !

Envoyer les logs dans la console VBA

Dans cette librairie, le logger est le composant central, agissant comme l'interface principale pour l'enregistrement, la catégorisation et la gestion des messages de log de votre application. Il fournit aux développeurs un outil configurable et flexible pour mettre en œuvre une logique de journalisation personnalisée adaptée à leurs besoins spécifiques. Le logger est conçu pour gérer plusieurs niveaux de journalisation, en dirigeant chaque entrée de journal vers les gestionnaires appropriés (c'est-à-dire les destinations appropriées) et en appliquant le formatage correct aux messages. Il prend également en charge l'utilisation de divers préprocesseurs, qui peuvent enrichir les messages de log avec des informations contextuelles supplémentaires, permettant une logique de journalisation complexe tout en gardant un code lisible et simple.

VBA Monologger propose une factory pour faciliter et uniformiser la création d'objets, comme les loggers. Pour créer un logger qui affiche les logs dans la console VBA, utilisez la méthode suivante : VBAMonologger.Factory.createLoggerConsoleVBA().

Public Sub howto_use_logger_console_VBA()
    Dim Logger As VBAMonologger.LoggerInterface
    Set Logger = VBAMonologger.Factory.createLoggerConsoleVBA()

    ' Use the logger for each severity levels
    Logger.trace "Authentication function call for user 'Bob Morane'." 
    Logger.info "User 'UltraVomit' has logged in successfully."
    Logger.notice "Process completed successfully with minor issues."
    Logger.warning "'Beetlejuice' should not be called more than 3 times."
    Logger.error "An error occurred with the user 'DRZCFOS2'."
    Logger.critical "System is in an unstable state."
    Logger.alert "Action required: unable to generate the dashboard."
    Logger.emergency "A critical failure occurred in the application."
End Sub
Vous pouvez voir le résultat dans la console VBA (a.k.a. Excel's Immediate Windows)


Remarque, avec la méthode createLoggerConsoleVBA, il est possible de définir le nom du logger (channel) et de charger un formateur de log personnalisé.

Public Function createLoggerConsoleVBA( _
    Optional ByVal paramLoggerName As String = vbNullString, _
    Optional ByRef paramFormatter As VBAMonologger.FormatterInterface = Nothing _
) As VBAMonologger.Logger

Envoyer les logs dans la console Windows (cmd.exe)

Il est possible d'envoyer les logs directement vers la console Windows (cmd.exe), en dehors de l'IDE d'Excel.

La création de ce type de logger se fait avec la factory de la librairie via la méthode VBAMonologger.Factory.createLoggerConsole(). La diffusion des logs vers la console Windows s'effectue à l'aide d'une architecture client/serveur. Le client (en VBA) envoie les enregistrements de log sous forme de requêtes HTTP au serveur, qui traite ces requêtes et affiche les messages de log directement dans sa sortie console. Ce logger dispose en plus d'un formateur de log particulier qui prend en charge le support des couleurs ANSI. Ce formateur est une instance de VBAMonologger.Formatter.FormatterANSIcoloredLine.

Public Sub howto_use_logger_console()
   Dim Logger As VBAMonologger.LoggerInterface
   Set Logger = VBAMonologger.Factory.createLoggerConsole("App")

   ' Logs message for each severity levels
   Logger.trace "Authentication function call for user 'Bob Morane'."
   (...)
End Sub
Lorsque vous exécutez ce code, une console cmd.exe est démarré, puis les logs s'affichent dans cette dernière. Remarquons que la librairie permet la personnalisation de la palette des couleurs.


Ecrire les logs dans un fichier

Vous pouvez envoyer les logs vers un fichier, et ainsi les sauvegarder. La factory fourni la méthode VBAMonologger.Factory.createLoggerFile() pour créer ce type de logger.

Public Function createLoggerFile( _
   Optional ByVal paramLoggerName As String = vbNullString, _
   Optional ByRef paramFormatter As FormatterInterface = Nothing, _
   Optional ByVal paramLogFileName As String = vbNullString, _
   Optional ByVal paramLogFileFolder As String = vbNullString _
) As VBAMonologger.Logger
Par défaut, les logs sont écrits dans le fichier ./var/log/logfile_yyyy-mm-dd.log, par rapport au chemin du classeur. Et pour garantir la compatibilité avec les caractères spéciaux et multilingues, le fichier utilise l'encodage UTF-8. Ci-dessous un exemple de création d'un logger de fichier personnalisé.

Public Sub howto_change_logger_file_name_and_folder()
   Dim Logger As VBAMonologger.LoggerInterface
   Set Logger = VBAMonologger.Factory.createLoggerFile( _
      paramLoggerName:= "App", _
      paramLogFileName:="my-log-file___"&format(Now, "yyyy-mm-dd") & ".log", _
      paramLogFileFolder:=ThisWorkbook.Path & "\logs" _
   )

   ' Logs message for each severity levels
   Logger.trace "Authentication function call for user 'Bob Morane'."
   (...)
EndSub


Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.