Selon son sens littéral du dictionnaire Oxford, le mot « log » peut être défini comme « un enregistrement officiel des événements pendant une période de temps particulière, notamment un voyage sur un bateau ou un avion ». Dans le domaine de la programmation, les programmeurs utilisent également ce terme pour conserver un enregistrement des événements et des activités importants pour le bon fonctionnement d’un programme. L’activité ou la création d’un journal est appelée journalisation et les outils pour effectuer une telle tâche est appelé un logger.
Le journal est documenté dans un fichier appelé le fichier journal. Dans le terme de programmeur informatique, Un fichier journal pourrait être décrit comme
un fichier qui conserve un registre des événements, des processus, des messages et de la communication entre diverses applications logicielles communicantes et le système d’exploitation. Les fichiers journaux sont présents dans les logiciels exécutables, les systèmes d’exploitation et les programmes par lesquels tous les messages et les détails des processus sont enregistrés. Chaque fichier exécutable produit un fichier journal où toutes les activités sont notées.
– Technopedia
Un fichier journal est important pour nous, programmeurs, pour garder une trace des événements importants pour certains cas tels que le débogage, l’évaluation et la surveillance. Dans cet article, je voudrais partager une façon de créer un paquet de logger simple à mettre en œuvre du côté serveur avec Golang.
Paquet de logger dans Golang
Notre code commence par la déclaration d’une clause de paquet nommée « logger » et l’importation des paquets requis : « fmt », « log », « os » et « path/filepath ». Nous allons utiliser deux types de logger : Common Log et Error Log. Le premier est utilisé pour enregistrer les événements courants tels que la connexion, la déconnexion, les données extraites, les données postées, etc. D’autre part, le second est utilisé pour enregistrer spécifiquement les événements d’erreur. Dans son essence, notre logger est construit sur un objet log. Par conséquent, nous allons créer deux variables « CommonLog » et « ErrorLog » (remarquez que la première lettre est en majuscule pour indiquer que la variable est exportée) avec un pointeur vers la structure du logger.
package loggerimport (
"fmt"
"log"
"os"
"path/filepath"
)var CommonLog *log.Loggervar ErrorLog *log.Logger
Puis, nous allons initier notre logger. Commençons par déclarer le chemin du fichier. Nous faisons cela en pointant l’emplacement de notre fichier de log à l’aide de la commande Abs du package file path (dans ce cas, nous utilisons l’emplacement absolu du fichier de log). Nous gardons ensuite la référence dans la variable filePath.
Dans la fonction init, nous continuons en définissant la commande qui sera exécutée lorsque le fichier journal sera ouvert par le programme (ce paramètre est référencé dans la variable openLogfile). Pour ce faire, nous utilisons la commande « OpenFile » du paquet « os » en spécifiant le chemin du fichier (en utilisant notre variable « filePath » en plus du nom du fichier), les drapeaux et fileMode. Dans cette partie, nous devons également décider du nom du fichier journal ; dans cet article, nous nommons le fichier journal log.log (remarquez l’extension log). Une attention particulière doit être portée aux drapeaux et au fileMode utilisés dans la fonction. Dans ce cas, les flags peuvent être décrits comme des indicateurs qui indiquent au programme ce qu’il doit faire avec le fichier ouvert. Pour cela, nous utilisons la constante prédéfinie du paquet « os » :
- os.0_RDWR = ouvrir le fichier en lecture-écriture
- os.0_CREATE = créer un nouveau fichier si aucun n’existe
- os.0._APPEND = ajouter des données au fichier lors de l’écriture
Pendant ce temps, le fileMode « 0666 » est le code pour définir la permission de fichier par défaut pour modifier le fichier (des lectures supplémentaires sur la permission de l’utilisateur peuvent être vues ici).
De plus, nous réécrirons notre variable CommonLog et ErrorLog pour contenir un nouveau journal. Nous le faisons avec la commande « New » du paquet « log » en spécifiant 1) le canal pour le fichier journal, 2) un préfixe et 3) des drapeaux requis.
- Canal pour le fichier journal : nous utilisons ici notre variable openLogfile
- Préfixe : C’est l’identifiant ou notre journal. Nous pourrions utiliser un mot de chaîne personnalisé pour définir le type de lof (c’est-à-dire « CommonLogger » ou « ErrorLogger »)
- Flags : Les drapeaux pour cette fonction dénote l’information que nous voulons avoir dans notre journal. Pour cela, nous utilisons la fonction intégrée du package log dans Go (le détail peut être vu ici).
Injection du logger à notre code
Enfin, nous pourrions injecter notre logger pour enregistrer les événements importants qui se produisent dans notre programme. Cela peut être fait en utilisant la commande « Prinln » comme celle que nous avons utilisée avec le package « fmt ».
Ici dans le fichier de log, le résultat du logger prendra la forme suivante:
It is Done!
So, c’est tout les gars ! nous avons créé un package logger qui peut être facilement injecté comme une dépendance dans notre programme Go. Espérons qu’il peut être utile pour vous collègues programmeurs.