web-dev-qa-db-ja.com

Azure Functionsのログレベルの構成

Application Insightsが構成されているAzure Function Appがあります。私の関数にはいくつかのLogTrace()メッセージが含まれていますが、AppInsightsによってキャプチャされていません。どこかに最小ログレベルを設定する必要がありますか?

11
phil

関数v1またはv2のログレベルを設定する方法については、 article を参照してください。

ファイルHost.json、提出された「関数」の場合、その値をTraceに設定します。次に、LogTrace()をアプリケーションの洞察にログインできます。

サンプル Host.json Azure関数v2の場合、トレースメッセージをApplication Insightsに記録できます。

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

また、Visual Studioで関数アプリを公開する場合は、公開する前に上記のようにHost.jsonファイルを変更できます。

Azureポータルでログレベルを変更する場合は、次の手順に従ってください。

Azure portalで、関数アプリに移動します->関数アプリの設定で、読み取り/書き込みを有効にしてから、ログレベルを変更してHost.json

enter image description here

11
Ivan Yang

@Ivan Yangの優れた答えにさらに追加するには、Azure関数のv2で最小ログレベル関数ごとを指定できます。 (私はそれがv1で動作する/動作しないかどうかを確認していません)彼の例を使うHost.json

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

Function.FunctionAは、(FunctionName属性を介して) "FunctionA"という名前の関数があることを前提としています。例:

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

そのため、FunctionName属性で指定する値はすべて、その関数のみの最小ログレベルを明示的に定義するために使用できます。の中に Host.json上記の例では、デフォルトで、すべての関数の最小ログレベルはTraceですが、FunctionAの最小ログレベルはWarningです。

8
Blair Allen