recherche
Maisondéveloppement back-endGolangrotation du journal Golang

rotation du journal Golang

May 06, 2023 pm 12:05 PM

Golang Log Rotation

Avec le développement continu des applications, il est inévitable que les fichiers journaux deviennent de plus en plus volumineux. Pour les applications de longue durée, les fichiers journaux peuvent atteindre plusieurs gigaoctets, ce qui peut créer des problèmes d'espace disque et ralentir l'ouverture et la lecture des fichiers journaux. Par conséquent, pour une bonne application, une gestion et une rotation raisonnables des fichiers journaux sont indispensables.

Dans Golang, certaines bibliothèques de journalisation puissantes sont fournies, telles que log package, zap, logrus, etc. Ce que ces bibliothèques de journaux ont en commun, c'est qu'elles génèrent toutes des fichiers journaux. Si les fichiers journaux deviennent trop volumineux, nous devons envisager la rotation des fichiers journaux.

Niveaux de journalisation dans le module de journalisation Golang

Le module de journalisation Golang définit différents niveaux de journalisation, tels que Debug, Info, Warning, Error, Fatal et Panic, en commençant par le niveau de débogage le plus bas. Voici leurs définitions :

const (
    Ldate         = 1 <p> Dans le journal, nous devons uniquement enregistrer les journaux d'un niveau supérieur au niveau de journal actuel, car les journaux de niveau supérieur sont plus urgents. En plus de nous aider à diagnostiquer les erreurs, les niveaux de journalisation peuvent également contrôler ce qui est enregistré dans le journal. Par exemple, nous pouvons enregistrer plus d'informations dans l'enregistreur de niveau Debug et enregistrer uniquement les informations sur les erreurs ou les avertissements dans les versions Release. </p><p>Rotation des fichiers journaux</p><p>Dans Golang, la rotation des journaux est contrôlée par le programmeur. Les techniques courantes pour implémenter la rotation des journaux sont la réplication et la compression. Lorsqu'un fichier journal atteint une certaine taille ou un certain intervalle, il doit être renommé et un nouveau fichier journal créé. </p><p>Afin d'obtenir la rotation du journal, nous pouvons choisir les deux méthodes suivantes : </p><p>1. Rotation par temps : Cette méthode utilise le temps comme axe, enregistrant un fichier chaque jour, et le fichier journal quotidien n'enregistre que le journal de celui-ci. jour. Lorsque le programme démarre le lendemain, un nouveau fichier journal est créé et l'ancien fichier journal est compressé ou supprimé. L’inconvénient est qu’il n’y a aucune garantie que la limite de taille de fichier ne sera pas dépassée dans la même journée. </p><p>2. Rotation par taille de fichier : Cette méthode prend la taille du fichier comme axe Chaque fois que le fichier journal atteint une certaine limite de taille, il est renommé et un nouveau fichier journal est créé. L’inconvénient est que les fichiers journaux ne peuvent pas être distingués en fonction du temps. </p><p> Ci-dessous, nous présenterons étape par étape comment implémenter la rotation des journaux en fonction de la taille du fichier via le code Golang. </p><p>Utilisez la bibliothèque Lumberjack pour la rotation des journaux</p><p>Lumberjack est une bibliothèque de journaux fiable pour faire pivoter les fichiers journaux en fonction de leur taille. Il prend en charge l'écriture de plusieurs fichiers journaux en parallèle et tire parti des fonctionnalités de Go pour éviter les conditions de concurrence. Lumberjack peut également compresser automatiquement les anciens fichiers journaux, économisant ainsi de l'espace disque. </p><p>Regardons d'abord un exemple simple : </p><pre class="brush:php;toolbar:false">package main

import (
    "github.com/natefinch/lumberjack"
    "log"
)

func main() {
    logger := &lumberjack.Logger{
        Filename:   "./log/test.log",
        MaxSize:    5, // megabytes
        MaxBackups: 3,
        MaxAge:     28, // days
    }

    log.SetOutput(logger)

    // 测试日志轮转
    for i := 0; i <p>Dans le code ci-dessus, nous utilisons la bibliothèque de journalisation Lumberjack pour la rotation des journaux. Nous définissons le fichier journal ./log/test.log comme fichier de sortie, définissons la limite de taille du fichier à 5 Mo, le nombre maximum de sauvegardes à 3 et le nombre maximum de jours de stockage à 28 jours. Lorsque la taille du fichier journal dépasse 5 Mo, Lumberjack écrit les données dans un nouveau fichier et enregistre l'ancien fichier en tant que sauvegarde .1, .2 ou .3. Lorsque le nombre de sauvegardes dépasse 3, les anciens fichiers de sauvegarde seront supprimés. Lorsqu'un ancien journal date de plus de 28 jours, il sera automatiquement supprimé. </p><p>Après 12 000 cycles, nous pouvons voir le fichier journal généré dans le répertoire ./log. Vous pouvez voir que Lumberjack a automatiquement divisé les fichiers journaux en différentes parties et supprimé automatiquement certains fichiers journaux obsolètes dans le délai spécifié. </p><p>Rotation commune des journaux</p><p>La configuration courante de la rotation des journaux par temps est la suivante : </p><pre class="brush:php;toolbar:false">logger := &lumberjack.Logger{
    Filename:   logPath,
    MaxSize:    0,
    MaxBackups: 0,
    MaxAge:     7,  // 保留最近 7 天的日志
    LocalTime:  true,
    Compress:   true, // 压缩日志文件
}

La configuration courante de la rotation des journaux par taille de fichier est la suivante :

logger := &lumberjack.Logger{
    Filename:   logPath,
    MaxSize:    100, // megabytes
    MaxBackups: 5,
    MaxAge:     30, // 保留最近 30 天的日志
    LocalTime:  true,
    Compress:   true, // 压缩日志文件
}

Résumé

Dans Golang, nous pouvons utiliser le journal Lumberjack bibliothèque pour réaliser l'automatisation Rotation des journaux pour résoudre le problème des fichiers journaux trop volumineux. Grâce à une configuration flexible, nous pouvons sélectionner l'heure ou la taille du fichier pour la rotation des journaux en fonction des besoins et supprimer automatiquement les fichiers journaux obsolètes. Cela permet non seulement de résoudre le problème des fichiers journaux répondant aux exigences minimales de stockage, mais permet également de garantir que les applications fonctionnent correctement et ne sont pas affectées par des fichiers journaux volumineux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Mastering go Strings: une plongée profonde dans le paquet 'Strings'Mastering go Strings: une plongée profonde dans le paquet 'Strings'May 12, 2025 am 12:05 AM

Vous devez vous soucier du package "Strings" dans GO, car il fournit des outils pour gérer les données de texte, l'épissage des chaînes de base à la correspondance avancée de l'expression régulière. 1) Le package "Strings" fournit des opérations de chaîne efficaces, telles que les fonctions de jointure utilisées pour épisser les chaînes pour éviter les problèmes de performances. 2) Il contient des fonctions avancées, telles que la fonction CONTAINSAL, pour vérifier si une chaîne contient un jeu de caractères spécifique. 3) La fonction de remplacement est utilisée pour remplacer les sous-chaînes d'une chaîne, et l'attention doit être accordée à l'ordre de remplacement et à la sensibilité à la casse. 4) La fonction divisée peut diviser les chaînes en fonction du séparateur et est souvent utilisée pour le traitement de l'expression régulière. 5) Les performances doivent être prises en compte lors de l'utilisation, comme

Package 'Encoding / Binary' dans Go: votre go-to pour les opérations binairesPackage 'Encoding / Binary' dans Go: votre go-to pour les opérations binairesMay 12, 2025 am 12:03 AM

Le "codage / binaire" PackageingOssentialForHandlingBinaryData, offrantoolsforreadingandwritingBinaryDataefficiently.1) itsupportsbothlittle-EndianandBig-EndianByteorders, Crucialforcross-System Compatibilité.2) ThepackageAlworkingwithcus

Tutoriel de manipulation de la tranche d'octets: maîtrise le package 'octets'Tutoriel de manipulation de la tranche d'octets: maîtrise le package 'octets'May 12, 2025 am 12:02 AM

La maîtrise du package d'octets dans GO peut aider à améliorer l'efficacité et l'élégance de votre code. 1) Le package des octets est crucial pour l'analyse des données binaires, le traitement des protocoles de réseau et la gestion de la mémoire. 2) Utilisez des bytes.buffer pour construire progressivement les tranches d'octets. 3) Le package d'octets fournit les fonctions de recherche, de remplacement et de segmentation des tranches d'octets. 4) Le type de lecteur d'octets convient pour la lecture des données des tranches d'octets, en particulier dans les opérations d'E / S. 5) Le package des octets fonctionne en collaboration avec GO'S GARBAGE Collector, améliorant l'efficacité du traitement des mégadonnées.

Comment utilisez-vous le package 'Strings' pour manipuler les chaînes en Go?Comment utilisez-vous le package 'Strings' pour manipuler les chaînes en Go?May 12, 2025 am 12:01 AM

Vous pouvez utiliser le package "Strings" dans GO To Manipulat Strings. 1) Utilisez des chaînes.trimspace pour supprimer les caractères de l'espace aux deux extrémités de la chaîne. 2) Utilisez des chaînes.split pour diviser la chaîne en tranches en fonction du délimiteur spécifié. 3) Fermer des tranches de chaîne en une chaîne à travers des chaînes.join. 4) Utilisez des chaînes. Continent pour vérifier si la chaîne contient une sous-chaîne spécifique. 5) Utilisez des chaînes.replaceALL pour effectuer un remplacement global. Faites attention aux performances et aux pièges potentiels lorsque vous l'utilisez.

Comment utiliser le package 'octets' pour manipuler les tranches d'octets en Go (étape par étape)Comment utiliser le package 'octets' pour manipuler les tranches d'octets en Go (étape par étape)May 12, 2025 am 12:01 AM

TheBytespackageingOishlyEffectiveForBytesLemanIpulation, offrant des fonctions de recherche, de fractionnement, de jointure et de bulle

Package des octets: quelles sont les alternatives?Package des octets: quelles sont les alternatives?May 11, 2025 am 12:11 AM

ThealternatiVestogo'sBytespackageinClusEsthingPackage, bufiopackage, andcustomStructs.1) ThestringsPackageCanbeusedForBytemanipulationByConvertingBytesTostringsandback

Manipuler les tranches d'octets en Go: la puissance du package 'octets'Manipuler les tranches d'octets en Go: la puissance du package 'octets'May 11, 2025 am 12:09 AM

Les "octets" emballent la manière dont la responsabilité de gestion des autres, crucial forbinarydata, neworkprotocols et filei / o.itoffersfunctions like indicexforseching, tamperforhlingllaredatasets, redenerforsimulatingstreamred, et joindeffientafficient.

GO PIRDS Package: un guide complet de la manipulation des cordesGO PIRDS Package: un guide complet de la manipulation des cordesMay 11, 2025 am 12:08 AM

Go'sstringspackageiscrucialforesficientsStringManipulation, offrantoolslikeSrings.split (), Strings.join (), Strings.replaceAll (), andString

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.