未使用Azure函数C#记录应用程序细节。名称空间似乎是个问题

未使用Azure函数C#记录应用程序细节。名称空间似乎是个问题,c#,azure,azure-functions,azure-application-insights,microsoft-extensions-logging,C#,Azure,Azure Functions,Azure Application Insights,Microsoft Extensions Logging,我们的函数将所有逻辑委托给另一个类“CreateHandler”,在该类中我们通过DI使用ILogger。函数正确记录,但CreateHandler不正确。我们在本地验证了它不会登录到控制台,除非我们将类名称空间更改为以“Function”开头的名称空间。这意味着functor或FunctionS可以工作,但RFunction或SFunction不能。我们正在处理该类和服务。显然,我们的服务有一个完全不同的名称空间,我们需要保留这个名称空间,同时记录日志。我们如何在不更改名称空间的情况下创建类日

我们的函数将所有逻辑委托给另一个类“CreateHandler”,在该类中我们通过DI使用ILogger。函数正确记录,但CreateHandler不正确。我们在本地验证了它不会登录到控制台,除非我们将类名称空间更改为以“Function”开头的名称空间。这意味着functor或FunctionS可以工作,但RFunction或SFunction不能。我们正在处理该类和服务。显然,我们的服务有一个完全不同的名称空间,我们需要保留这个名称空间,同时记录日志。我们如何在不更改名称空间的情况下创建类日志

CreateHandler类(日志记录权限):

local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true"
  }
}
host.json:

{
  "version": "2.0",
}

我以前在github中注意到了这个问题(如果名称空间不是以函数开头的),但目前找不到它

解决方案是,如果名称空间不是以函数启动的,则应在
host.json
中添加已完成的
namespace+class
名称。如下图所示:

{
  "version": "2.0",
  "logging": {
    "logLevel": {
      "ExampleProject.Functions.Handlers.CreateHandler": "Information"
    }
  }
}
或一般方式:

"logLevel": { "Default": "Information" }

你能分享记录发生在哪里以及ILogger是如何注入的相关代码吗?@NoahStahl done✔和我的相比看起来不错。在门户中功能应用程序的application insights刀片上,您是否看到“application insights通过应用程序设置中的Instrumentation Key链接”?我们有一个值为的APPINSIGHTS\u INSTRUMENTATIONKEY设置。但据我所知,这仅适用于已部署的功能。我首先尝试让它在本地工作。@NoahStahl More测试揭示了更奇怪的事情,如果名称空间以Function开头,它会记录日志,这意味着它将使用FunctionSomething,但不会使用UFunctionThank,它确实解决了问题。我还通过设置“logLevel”以更一般的方式完成了它:{“Default”:“Information”}太棒了!我的有限测试表明,您也不需要完全限定的名称空间,因此如果您想捕获从该名称空间记录的所有内容,可以使用“ExampleProject.Functions”
{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true"
  }
}
{
  "version": "2.0",
}
{
  "version": "2.0",
  "logging": {
    "logLevel": {
      "ExampleProject.Functions.Handlers.CreateHandler": "Information"
    }
  }
}
"logLevel": { "Default": "Information" }