Azure Functions でログレベルを設定する

Azure Functionsで標準的に出力されるログのレベルはhost.jsonファイルで構成できます。

まぁいいんですがローカルでの開発時やCI/CD考えるとhost.jsonそのまま編集したりソース管理したりすると環境によって変えたい時とか不便ですよね。
特にRun From Packageとかでデプロイしてるとhost.jsonは読み取り専用になるし。

ということで回避策としてはアプリケーション設定(application settings)で上書きすればいいです。ただし設定名などは工夫が必要です。具体的にはJsonの階層を表現するのにドットの代わりにアンダースコア2つにする( __ )、loggingの前に AzureFunctionsJobHost を付けるといった感じです。

  {
    "name": "AzureFunctionsJobHost__logging__logLevel__default",
    "value": "Warning",
    "slotSetting": false
  },
  {
    "name": "AzureFunctionsJobHost__logging__logLevel__Function",
    "value": "Warning",
    "slotSetting": false
  },
  {
    "name": "AzureFunctionsJobHost__logging__logLevel__Host.Results",
    "value": "Warning",
    "slotSetting": false
  },
  {
    "name": "AzureFunctionsJobHost__logging__logLevel__Host.Aggregator",
    "value": "Warning",
    "slotSetting": false
  },

これでHost.jsonに以下のように設定したのと同じことになると思います。

{
  "logging": {
    "logLevel": {
      "default": "Warning",
      "Host.Results": "Warning",
      "Function": "Warning",
      "Host.Aggregator": "Warning"
    }
  }
}

後の内容はドキュメント参照。他にもhost.jsonの内容はAzureFunctionsJobHost__ をつければアプリケーション設定で上書きできると思います。(たぶん)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中