En golang, l'utilisation de l'impression de journaux est un moyen très courant. Cependant, dans certains scénarios nécessitant performances et efficacité, la désactivation de l'impression des journaux peut améliorer la vitesse d'exécution du programme et réduire l'interférence des journaux non pertinents. Cet article explique comment désactiver l'impression des journaux et améliorer les performances du programme.
Généralement, l'utilisation des journaux dans Golang peut être divisée de deux manières :
La première consiste à utiliser le package de journaux dans la bibliothèque standard pour imprimer les journaux :
import "log" func main() { log.Println("Hello, World!") }
La seconde consiste à utiliser une bibliothèque tierce, telle que logrus. Ici, nous prenons logrus comme exemple :
import "github.com/sirupsen/logrus" func main() { logrus.SetLevel(logrus.WarnLevel) logrus.SetFormatter(&logrus.JSONFormatter{}) logrus.Warn("Something not good happened") }
Dans le code ci-dessus, nous utilisons les fonctions SetLevel et SetFormatter de logrus. , qui peut définir le niveau de journalisation et le format imprimé par logrus.
Mais dans certains systèmes ayant des exigences élevées en matière de performances et d'efficacité, l'impression des journaux deviendra un goulot d'étranglement en termes de performances. Dans ces cas, nous devons désactiver la fonction d’impression du journal.
Fermez le journal dans la bibliothèque standard
Lorsque nous voulons désactiver la fonction d'impression du journal dans la bibliothèque standard, nous pouvons définir le pipeline d'impression en appelant log.SetOutput (ioutil.Discard) fonction Pour Discard, l'impression du journal est désactivée.
import ( "io/ioutil" "log" ) func main() { log.SetOutput(ioutil.Discard) log.Println("This won't get printed") }
Dans le code ci-dessus, nous utilisons la fonction ioutil.Discard pour définir le tuyau d'impression sur Discard, réalisant ainsi la fonction de désactivation de l'impression du journal. À ce stade, la fonction log.Println ne produira plus rien.
Fermer le logrus
Pour le logrus de la bibliothèque tierce, l'impression des journaux doit également être désactivée dans les systèmes ayant des exigences élevées en matière de performances et d'efficacité. Ceci peut être réalisé des deux manières suivantes :
Définissez le niveau de journalisation sur PanicLevel, ce qui fera logrus uniquement Enregistre les journaux en dessous du niveau de panique. Le code est le suivant :
import "github.com/sirupsen/logrus" func main() { logrus.SetLevel(logrus.PanicLevel) logrus.Warn("This won't get printed") }
Dans le code ci-dessus, nous utilisons la fonction SetLevel de logrus pour définir le niveau de journalisation sur PanicLevel, réalisant ainsi la fonction de désactivation de l'impression de logrus.
logrus fournit des hooks, et ils seront enregistrés dans logrus au démarrage de l'application. Lorsque certains événements se produisent, logrus enverra des messages aux hooks enregistrés. Cependant, dans certains systèmes ayant des exigences élevées en matière de performances et d’efficacité, ces hooks consommeront plus de ressources système. Dans ces cas, nous pouvons désactiver les hooks via le code suivant :
import ( "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks" ) func main() { logrus.AddHook(&hooks.NullHook{}) logrus.Warn("This won't get printed") }
Dans le code ci-dessus, nous appelons la fonction AddHook et ajoutons NullHook aux hooks logrus, réalisant ainsi la fonction de désactivation de l'impression logrus.
En résumé, pour certains systèmes qui ont des exigences plus élevées en matière de performances et d'efficacité, l'utilisation de la solution ci-dessus pour désactiver la fonction d'impression du journal lorsque cela est nécessaire peut améliorer les performances du système et réduire les interférences du système.
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!