es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Azure Function v4 – Cómo desactivar el registro del host

Tengo una aplicación C# de Azure Function que se implementa a través de la canalización de compilación y lanzamiento de DevOps.

Estaba ejecutándose en el tiempo de ejecución de Azure Functions v3. Recientemente actualicé el archivo del proyecto y la plantilla bicep de la aplicación de función para que se ejecute en v4.

La aplicación está configurada para registrar en Azure Sql a través de Serilog. Desde la actualización, he notado miles de entradas de registro adicionales del Azure Functions Host.

La sección de registro de mi archivo appsettings.json se muestra a continuación. Mi comprensión es que estos se usarían cuando haya valores equivalentes disponibles para la aplicación de función como variables de entorno, a través de la sección de configuración de la aplicación de función.

"Logging": {
"LogLevel": {
  "Default": "Error"
},
"ApplicationInsights": {
  "LogLevel": {
    "Default": "Information"
  }
}
}

Intenté seguir la respuesta a esta publicación para suprimir la registro agregando las siguientes entradas en la configuración de la aplicación de función:

"name": "AzureFunctionsJobHost__Logging__LogLevel__Microsoft",
"value": "Error"

"name": "AzureFunctionsJobHost__Logging__LogLevel__Azure",
"value": "Error"

Reinicié la aplicación de función, pero no noté ninguna diferencia en los registros. Aquí tienes un ejemplo de uno de los registros no deseados (todos registrados con un nivel de “Información”):

<properties>
<property key='requestId'>bcc9a52c-fb8b-4a89-bb1c-9ed08eb305c4</property>
<property key='status'>200</property>
<property key='reasonPhrase'>OK</property>
<property key='seconds'>0.0048284</property>
<property key='EventSourceEvent'>Response [bcc9a52c-fb8b-4a89-bb1c-9ed08eb305c4] 200 OK (00.0s)</property>
<property key='EventId'>
    <structure type=''>
        <property key='Id'>5</property>
        <property key='Name'>Response</property>
    </structure>
</property>
<property key='SourceContext'>Azure.Core</property>
</properties>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    Parece que los cambios que hiciste a la configuración de la aplicación de la función no se aplicaron. Esto puede deberse a algunas razones, como nombres incorrectos o ubicación incorrecta de las configuraciones. Aquí hay algunos pasos que puedes seguir para asegurarte de que los cambios se apliquen:

    1. Verifica que los nombres de las configuraciones de la aplicación sean correctos. En tu caso, los nombres deberían ser AzureFunctionsJobHost__Logging__LogLevel__Microsoft y AzureFunctionsJobHost__Logging__LogLevel__Azure.
    2. Asegúrate de que las configuraciones de la aplicación estén ubicadas en el nivel correcto. Cuando agregas configuraciones de la aplicación a una aplicación de función de Azure, puedes elegir agregarlas en el nivel de la aplicación de función o en el nivel de la función. Si agregaste las configuraciones en el nivel de la función, es posible que no estén teniendo efecto en toda la aplicación de función. Intenta agregarlas en el nivel de la aplicación de función en su lugar.
    3. Reinicia la aplicación de función después de hacer los cambios en las configuraciones de la aplicación. Esto garantiza que los cambios se apliquen.

    Si los pasos anteriores no resuelven el problema, puedes intentar establecer el nivel de registro programáticamente en tu código C# usando Serilog. Aquí tienes un ejemplo de cómo hacerlo:

    using Microsoft.Extensions.Logging;
    
    public static void Run(...)
    {
        // Configurar Serilog
        var logger = new LoggerConfiguration()
            .MinimumLevel.Error() // Establecer el nivel mínimo de registro en Error
            .CreateLogger();
    
        // Usar Serilog con ILogger
        var loggerFactory = LoggerFactory.Create(builder =>
        {
            builder.AddSerilog(logger, dispose: true);
        });
        var logger = loggerFactory.CreateLogger<function1>();
    
        // ...
    }
    

    Esto establecerá el nivel mínimo de registro en Error, lo que debería suprimir las entradas de registro adicionales que estás viendo. También puedes experimentar con otros niveles de registro si es necesario.

    ¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.

Comments are closed.