web-dev-qa-db-fra.com

Configuration du niveau de journal pour les fonctions Azure

J'ai une application Azure Function qui a configuré Application Insights. Mes fonctions contiennent des messages LogTrace() mais ils ne sont pas capturés par AppInsights. Dois-je configurer un niveau de journalisation minimum quelque part?

11
phil

Veuillez consulter ceci article sur la façon de définir le niveau de journalisation pour la fonction v1 ou v2.

Dans le fichier Host.json, pour la "Fonction" déposée, définissez sa valeur sur Trace. LogTrace () peut ensuite être connecté aux informations de l'application.

Échantillon Host.json pour la fonction Azure v2, qui peut consigner les messages de trace dans Application Insights:

{
  "version": "2.0",
  "logging": {
    "fileLoggingMode": "always",
    "logLevel": {
      "default": "Information",
      "Host.Results": "Error",
      "Function": "Trace",
      "Host.Aggregator": "Trace"
    }
  }
}

Et si vous publiez votre application de fonction avec Visual Studio, vous pouvez modifier votre fichier Host.json comme indiqué ci-dessus avant la publication.

Et si vous souhaitez modifier le niveau de journalisation dans le portail Azure, procédez comme suit:

Dans le portail Azure, accédez à votre application de fonction -> dans les paramètres de l'application de fonction, assurez-vous d'activer la lecture/écriture, puis modifiez le niveau de journal pour tracer dans le Host.json.

enter image description here

11
Ivan Yang

Pour ajouter à l'excellente réponse de @Ivan Yang, vous pouvez spécifier un niveau de journalisation minimum par fonction dans la v2 d'Azure Functions. (Je n'ai pas vérifié si cela fonctionne/ne fonctionne pas en v1) En utilisant son exemple Host.json:

{
  "version": "2.0",
  "logging": {
    "fileLoggingMode": "always",
    "logLevel": {
      "default": "Information",
      "Host.Results": "Error",
      "Function": "Trace",
      "Function.FunctionA": "Warning",
      "Host.Aggregator": "Trace"
    }
  }
}

Function.FunctionA suppose que vous avez une fonction nommée (via l'attribut FunctionName) "FunctionA", par exemple:

[FunctionName("FunctionA")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "")]HttpRequest req, ILogger log)
{
  ...function code here
}

Ainsi, quelle que soit la valeur que vous spécifiez dans l'attribut FunctionName, vous pouvez utiliser pour définir explicitement un niveau de journal minimum juste pour cette fonction. Dans le Host.json exemple ci-dessus, toutes les fonctions, par défaut, auront un niveau de journal minimum de Trace tandis que FunctionA aura un niveau de journal minimum de Warning.

8
Blair Allen