"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment minimiser le coût des instructions de journalisation de trace désactivées dans Go ?

Comment minimiser le coût des instructions de journalisation de trace désactivées dans Go ?

Publié le 2024-11-09
Parcourir:987

How to Minimize the Cost of Disabled Trace Logging Statements in Go?

Journalisation de trace à faible coût dans Go pour les instructions désactivées

Dans Go, la journalisation de trace présente un défi unique : minimiser le coût des instructions de journal désactivées dans les chemins critiques. Contrairement à C/C , Go ne dispose pas de macros de préprocesseur, ce qui nécessite d'explorer des solutions alternatives.

Une approche consiste à utiliser les interfaces fmt.Stringer et fmt.GoStringer. En retardant le formatage jusqu'à l'exécution du journal, des appels de fonction coûteux dans les arguments de journalisation peuvent être évités :

type LogFormatter interface {
    LogFormat() string
}

// Inside the logger
if i, ok := i.(LogFormatter); ok {
    fmt.Println(i.LogFormat())
}

Une autre stratégie consiste à remplacer l'enregistreur au moment de l'exécution à l'aide d'une interface d'enregistreur ou au moment de la construction à l'aide de contraintes de construction. Cependant, cela nécessite de s'assurer qu'aucun appel coûteux n'est inséré dans les arguments de journalisation.

Une troisième option consiste à définir le Logger lui-même comme un bool, réduisant ainsi la verbosité tout en fournissant un moyen concis de contrôler la journalisation :

type Log bool
func (l Log) Println(args ...interface{}) {
    fmt.Println(args...)
}

var debug Log = false

if debug {
    debug.Println("DEBUGGING")
}

Enfin, la génération de code peut être explorée, même si elle ne convient pas à la configuration du runtime. En utilisant gofmt -r ou en créant des fichiers à l'aide de texte/modèle, il est possible de créer des versions de débogage distinctes pour des scénarios de débogage spécifiques.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3