Registro eficiente para declaraciones deshabilitadas en Go
En rutas críticas, es beneficioso incorporar declaraciones de registro de depuración/rastreo que se pueden alternar dinámicamente en tiempo de ejecución. Esta práctica es ideal para depurar sistemas de producción desconectados o probar sistemas que reflejan el entorno de producción.
Sin embargo, existe un requisito crucial para este tipo de registro: las declaraciones deshabilitadas deben tener un impacto mínimo en el rendimiento. En C/C, esto se logró a través de una macro LOG que suprimía la evaluación de argumentos hasta que se marcaba un indicador.
Implementación del inicio de sesión deshabilitado en Go
Emulación de este comportamiento en Go presenta desafíos. Usar io.Discard con log.Logger no es una opción ya que formatea los mensajes de registro incluso cuando están deshabilitados.
Un intento inicial con una estructura EnabledLogger implementa la interfaz log.Logger, habilitando/deshabilitando el registro según el estado habilitado bandera. Sin embargo, la evaluación de argumentos permanece sin suprimir, lo que puede generar problemas de rendimiento para llamadas a funciones arbitrarias.
Dos soluciones alternativas
Para solucionar este problema, existen dos soluciones alternativas:
Ambos enfoques dan como resultado un código detallado y propenso a errores, lo que abre la puerta a posibles regresiones en el rendimiento.
Otras opciones
A pesar de las reglas de evaluación estática de Go, hay algunas opciones adicionales:
Si bien estas soluciones no son ideales para la configuración dinámica del tiempo de ejecución, pueden introducir mejoras de rendimiento en escenarios específicos.
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