"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo minimizar el costo de las declaraciones de registro de seguimiento deshabilitadas en Go?

¿Cómo minimizar el costo de las declaraciones de registro de seguimiento deshabilitadas en Go?

Publicado el 2024-11-09
Navegar:744

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

Registro de seguimiento de bajo costo en Go para declaraciones deshabilitadas

En Go, el registro de seguimiento presenta un desafío único: minimizar el costo de las declaraciones de registro deshabilitadas en rutas críticas. A diferencia de C/C, Go no tiene macros de preprocesador, lo que hace necesario explorar soluciones alternativas.

Un enfoque implica el uso de las interfaces fmt.Stringer y fmt.GoStringer. Al retrasar el formateo hasta la ejecución del registro, se pueden evitar costosas llamadas a funciones en los argumentos de registro:

type LogFormatter interface {
    LogFormat() string
}

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

Otra estrategia es intercambiar el registrador en tiempo de ejecución usando una interfaz de registrador o en tiempo de compilación usando restricciones de compilación. Sin embargo, esto requiere garantizar que no se inserten llamadas costosas en los argumentos de registro.

Una tercera opción es definir el registrador en sí como un bool, lo que reduce la verbosidad y al mismo tiempo proporciona una forma concisa de controlar el registro:

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

var debug Log = false

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

Finalmente, se puede explorar la generación de código, aunque no es adecuada para la configuración en tiempo de ejecución. Al emplear gofmt -r o crear archivos usando texto/plantilla, es posible crear compilaciones de depuración separadas para escenarios de depuración específicos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3