"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 se puede implementar el registro de MDC en GoLang?

¿Cómo se puede implementar el registro de MDC en GoLang?

Publicado el 2024-12-23
Navegar:391

How can you implement MDC logging in GoLang?

Inicio de sesión de MDC en GoLang

El registro de MDC de Java se basa en el almacenamiento local de subprocesos, que no está disponible en GoLang. Sin embargo, se puede lograr una funcionalidad similar al pasar un contexto a través de la pila.

Java MDC se basa en el almacenamiento local de subprocesos, algo que Go no tiene. Lo más parecido es pasar un contexto a través de su pila, lo cual se está convirtiendo en una práctica común en las bibliotecas de Go.

Una forma de implementar esto es a través de un paquete de middleware que agrega un ID de solicitud al contexto de una solicitud web. . Este ID se puede recuperar y utilizar en toda la pila para fines de registro.

Aquí hay un ejemplo sencillo de un paquete de middleware:

req = req.WithContext(context.WithValue(req.Context(), "requestId", ID))

El ID de la solicitud se puede recuperar usando:

ctx.Value("requestId")

Este valor se puede usar en una función de registro personalizada:

func logStuff(ctx context.Context, msg string) {
    log.Println(ctx.Value("requestId"), msg) // call stdlib logger
}

Este enfoque permite un fácil seguimiento de solicitudes simultáneas agregando ID únicos a todos los registros del servidor. Hay otras implementaciones posibles, pero esta proporciona una forma sencilla de lograr un registro similar a MDC en GoLang.

Ú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