Envío y recibo enormes cargas JSON hacia/desde servicios web. Registro contenido JSON a nivel de depuración en formato fácil de leer (Prettifier) y código de respuesta a nivel de información.
_logger.LogInformation($"statusCode={responseMessage.StatusCode}"); _logger.LogDebug(MyJsonPrettifier(await responseMessage.Content.ReadAsStringAsync));Esto es realmente útil durante el desarrollo: puedo inspeccionar rápidamente lo que está sucediendo. Sin embargo, debido a cómo están estructuradas estas funciones (argumento de cadena simple), siempre se ejecutará incluso si configuro el nivel de registro en diferente: advertencia cuando publique la versión de lanzamiento.
Leí este artículo donde se muestra la diferencia: la aplicación sin registros funciona 40 veces más rápido. El problema es realmente serio. Desarrollo en .NET5 y también uso Serilog. ¿Existe una manera fácil, universal y tal vez establecida de abordar este problema?
Podría mejorar fácilmente el problema con un registrador que tome las devoluciones de llamada como argumentos. Por lo tanto, solo ejecutaría la devolución de llamada si se establece el nivel de registro adecuado.
_logger.LogInformation( () => $"statusCode={responseMessage.StatusCode}"); _logger.LogDebug( () => MyJsonPrettifier(await responseMessage.Content.ReadAsStringAsync) );