Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用EF Core和DI登录Azure函数 我的问题是:_C#_Logging_.net Core_Entity Framework Core_Azure Functions - Fatal编程技术网

C# 使用EF Core和DI登录Azure函数 我的问题是:

C# 使用EF Core和DI登录Azure函数 我的问题是:,c#,logging,.net-core,entity-framework-core,azure-functions,C#,Logging,.net Core,Entity Framework Core,Azure Functions,我对在.NETCore中使用IoC容器和日志记录机制比较陌生 如何让实体框架核心上下文编写的日志分别显示在Azure函数日志和ApplicationInsights中 背景: 我有一个Azure函数,其中我使用.AddDbContext()注册我的DbContext以进行依赖项注入: public override void Configure(IFunctionsHostBuilder builder) { var connectionString = Environment.GetE

我对在.NETCore中使用IoC容器和日志记录机制比较陌生

如何让实体框架核心上下文编写的日志分别显示在Azure函数日志和ApplicationInsights中

背景: 我有一个Azure函数,其中我使用
.AddDbContext()
注册我的DbContext以进行依赖项注入:

public override void Configure(IFunctionsHostBuilder builder)
{
    var connectionString = Environment.GetEnvironmentVariable("MyConnectionString");

    builder.Services.AddDbContext<MyDbContext>(
        options => options.UseSqlServer(connectionString));
}    
公共覆盖无效配置(IFunctionsHostBuilder)
{
var connectionString=Environment.GetEnvironmentVariable(“MyConnectionString”);
builder.Services.AddDbContext(
options=>options.UseSqlServer(connectionString));
}    
在Startup.cs中

然后在我的数据访问层库中使用注入的DbContext来完成与数据库相关的工作。 在某些情况下,我希望显式地记录正在发生的事情,但不必在DbContext类中实现专用的记录器字段或属性

相反,我试图做的是通过
.AddDbContext()
访问向我的DbContext注册的日志记录服务,并通过
var logger=contextInstance.GetService()获取ILogger实例进行日志记录

现在从理论上讲,我会选择logger.LogInformation(“发生了什么事!”)。因为它在运行时不会抛出任何异常,所以我想它可以正常工作

我现在想在我的函数日志中看到“发生了什么事!”。这样地:

我知道,让这些日志显示在Azure函数日志中会导致上下文编写的所有日志也出现在我的函数日志中。我以后会担心过滤问题。。或者有人马上就有了建议

有没有可能按我希望的方式进行

旁注:
如果有人对这种方法有意见,或者可以为我指出一种更好的方法来实现我在这种情况下的登录,我很乐意阅读对此的任何评论。

logger.LogInformation(“发生了什么事!”)
是添加自定义日志的正确方法。只是澄清一下,默认情况下,appinsights中的SQL日志记录在依赖项跟踪下。您是否尝试将EF数据记录为跟踪,以便它显示在调用详细信息刀片中?以前没有尝试过这种获取ILogger的方法,但我想您看到了编写代码的必要性,因为在
host.json
logger.LogInformation(“发生了什么事!”)中,几乎所有内容都是默认过滤掉的
是添加自定义日志的正确方法。只是澄清一下,默认情况下,appinsights中的SQL日志记录在依赖项跟踪下。您是否尝试将EF数据记录为跟踪,以便它显示在调用详细信息刀片中?以前没有真正尝试过这种获取ILogger的方法,但我想您看到了编写代码的必要性,因为几乎所有内容都是在
host.json中默认过滤掉的