我有一些服务最初设计为从我的ASP.NET Core 2.1 Web应用程序调用.它们使用Microsoft.Extensions.DependencyInjection包的东西将依赖注入到它们的构造函数中.其中一些具有ILogger记录器的依赖性.
public GroupService(ILogger<GroupService> logger)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我正在该函数中构建一个服务提供程序,以便它们仍然可以按预期工作,但我想知道我应该如何处理logger依赖项.Azure函数(V2)默认情况下会将ILogger注入其中,但不能在DI容器中使用它来创建服务所需的其他记录器.
是否有一个LoggerFactory注册在"隐藏"的地方,我可以访问我的DI容器中使用?我想这会允许我添加记录到函数输出窗口的其他记录器,或者我完全误解了函数的登录方式是如何工作的?
我只需要设置一个新的LoggerFactory并将该日志发送到函数项目使用的ApplicationInsights实例吗?
随着 EF Core 6.0 中该方法的发布,.TagWithCallSite()我想知道是否有一种方法可以在通过某种DbContext方式运行的每个查询上全局应用此方法?
最好将其应用于整个项目,而不必单独将其应用于每个查询。
我正在尝试找出是否有一种简单的方法可以让 ASP.NET Core 记录哪个[Authorize]属性失败。我混合了“角色”和“策略”授权属性,但每当其中一个失败时,日志就会显示:
显然,这是正确的行为,并且它不会让具有不正确权限的人进入,但是如果您有多个属性,则必须去找出哪个属性失败了,这有点痛苦。如果日志只是显示Authorization failed for Policy X,那么就很容易找到失败的原因。
有谁知道目前是否可以通过我不知道的某些选项来实现这一点?
编辑:例如:如果我有[Authorize(Policy = "Policy 1")]并且[Authorize(Policy = "Policy 2")]只有“策略 2”失败。我希望看到一些东西告诉我“政策 2”失败了。
编辑:对于任何仍然遇到这个问题的人,这现已由 Microsoft 实现并且是 .NET 5.0 的一部分,请参阅问题https://github.com/aspnet/AspNetCore/issues/7789