„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie können die Kosten für deaktivierte Trace-Protokollierungsanweisungen in Go minimiert werden?

Wie können die Kosten für deaktivierte Trace-Protokollierungsanweisungen in Go minimiert werden?

Veröffentlicht am 09.11.2024
Durchsuche:631

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

Kostengünstige Ablaufverfolgungsprotokollierung in Go für deaktivierte Anweisungen

In Go stellt die Ablaufverfolgungsprotokollierung eine einzigartige Herausforderung dar: die Minimierung der Kosten für deaktivierte Protokollanweisungen in kritischen Pfaden. Im Gegensatz zu C/C verfügt Go über keine Präprozessormakros, sodass alternative Lösungen untersucht werden müssen.

Ein Ansatz besteht darin, die Schnittstellen fmt.Stringer und fmt.GoStringer zu verwenden. Durch die Verzögerung der Formatierung bis zur Protokollausführung können teure Funktionsaufrufe in den Protokollierungsargumenten vermieden werden:

type LogFormatter interface {
    LogFormat() string
}

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

Eine andere Strategie besteht darin, den Logger zur Laufzeit mithilfe einer Logger-Schnittstelle oder zur Build-Zeit mithilfe von Build-Einschränkungen auszutauschen. Dazu muss jedoch sichergestellt werden, dass keine teuren Aufrufe in die Protokollierungsargumente eingefügt werden.

Eine dritte Option besteht darin, den Logger selbst als Bool zu definieren, was die Ausführlichkeit reduziert und gleichzeitig eine knappere Möglichkeit bietet, die Protokollierung zu steuern:

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

var debug Log = false

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

Abschließend kann die Codegenerierung untersucht werden, obwohl sie nicht für die Laufzeitkonfiguration geeignet ist. Durch die Verwendung von gofmt -r oder das Erstellen von Dateien mithilfe von Text/Vorlage ist es möglich, separate Debug-Builds für bestimmte Debugging-Szenarien zu erstellen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3