如何为 azure 函数的每个 https 请求将日志保存到 adls

how to save logs to adls for every https request of azure function

我有一个带有 HTTP 触发器的 Azure 函数。对于每个 HTTP 请求,我需要将 post 请求的详细信息日志保存到 ADLS,例如触发时间和请求参数。

任何人都可以帮助我,我该怎么做?

这是我在 ADLS Gen 2 中存储 Azure 函数日志的解决方法,其中日志包含函数执行时间、开始时间、执行结果等

  • 要在 ADLS Gen 2 中创建函数应用程序,首先,您需要创建类型为 ADLS Gen 2 的存储帐户。

  • 创建存储帐户时,选中 Enable hierarchical namespace 框以创建 ADLS Gen 2 帐户。

创建 ADLS 存储帐户后,使用 PowerShell 命令在该存储帐户中创建函数应用程序:(例如 DotNet Stack)

New-AzFunctionApp -Name <APP_NAME> -ResourceGroupName AzureFunctionsQuickstart-rg -StorageAccount <STORAGE_NAME> -Runtime dotnet -FunctionsVersion 3 -Location '<REGION>'
  • 通过函数应用程序中的门户创建了 Http 触发器函数应用程序,并且 运行 成功 POST 请求。
  • 在门户中的 Function App 上启用 Application Insights 资源。
  • 所有日志将存储在路径中:

ADLS存储账户>文件共享>你的函数应用程序>日志文件>应用程序>函数>函数>你的函数名称>在这里你可以看到日志。

假设,Function Key 也是 Azure Function URL.

中的参数之一

默认情况下,不会记录此信息,但我们可以自定义代码来记录此参数,在 Application insights 的 Traces table 中,可以使用此信息。

const  string key_Claim =  "http://schemas.microsoft.com/2017/07/functions/claims/keyid";
var claim = req.HttpContext.User.Claims.FirstOrDefault(c => c.Type  == key_Claim);
if(claim !=  null)
{
log.LogInformation(  "The call was made using {0} named key", claim.Value);
 }

在 Application Insights [日志]

我在 .Net Stack 中所做的上述解决方法和 是与读取 Azure 函数参数相关的示例代码,并使用 NodeJS 将其存储在 blob 文件中.