In kritischen Pfaden ist es wertvoll, Debug-/Trace-Protokollierungsanweisungen auf niedriger Ebene beizubehalten. Diese können durch Laufzeitkonfiguration aktiviert werden, sodass sie in der Produktion deaktiviert werden können (um Leistungseinbußen zu vermeiden), während sie in einer Produktionsumgebung (z. B. zum Debuggen oder Testen) aktiviert werden.
Dieser Ansatz erfordert, dass die Kosten für das Auffinden einer deaktivierten Protokollanweisung auf einem kritischen Pfad extrem niedrig sein müssen, idealerweise nur eine boolesche Prüfung.
Im Gegensatz zu C/C Im LOG-Makro von Go bietet die Protokollierung von Go keine Möglichkeit, die Auswertung von Argumenten zu vermeiden, bis ein Flag überprüft wird. Dies stellt eine Herausforderung dar, um Leistungseinbußen zu vermeiden, wenn Protokolle deaktiviert sind.
Der optimale Ansatz hängt von den spezifischen Anforderungen der Anwendung ab. Für die konfigurierbare Ablaufverfolgung zur Laufzeit eignen sich das EnabledLogger-Muster oder Dynamic Logger Swapping. Für minimalen Overhead und eine knappe Syntax kann es effektiv sein, den Logger einer Bool-Variablen zuzuweisen. Die Codegenerierung bietet eine Lösung für separate Debug-Builds.
Das obige ist der detaillierte Inhalt vonWie erreicht man einen minimalen Overhead für die deaktivierte Trace-Protokollierung in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!