使用 Entity Framework Core 进行日志记录
学习使用 EF Core 中的简单日志记录功能来掌握日志记录的基础知识。
简单日志记录
在 EF Core 中,日志记录使我们能够获取所执行 SQL 查询的相关信息。例如,日志可用于诊断查询速度慢或查询未能返回预期结果的问题。
简单日志记录 是 EF Core 中一种配置最少、无需额外 NuGet 包的记录方式。它为开发应用程序时提供了一种便捷的日志获取手段。我们将通过以下 C# 项目进行演示:
No configuration found for ID: 9c11b32d30c9ca755ffd50fdde1285e79ea991cc8fa1e6fd870bb3682a1534a8
点击“运行”按钮,然后在终端中执行以下命令:
1dotnet run
配置
我们可以通过在配置 DbContext 时调用 LogTo 方法来配置简单日志记录。上述项目中 ArtistsContext.cs 文件的 第 21 行 明确展示了这一点。
日志输出目标
我们可以将日志输出到控制台、文件或调试窗口。LogTo 方法接受一个 Action<T> 委托,该委托接收一个字符串参数。EF Core 会为每个生成的日志消息调用此委托。
输出到控制台
上述项目中 ArtistsContext.cs 文件的 第 21 行 使用 Console.WriteLine 作为 Action<T> 委托,将日志输出到控制台。
输出到文件
我们可以将日志输出到文件。以下项目演示了这一用法:
No configuration found for ID: 102a07cf23c47235722cb582f805f57d3d5241ef2e413f32f4253196a62401fc
点击“运行”按钮,然后在终端中执行以下命令:
1dotnet run
注意: 在终端中,可以使用 Linux 命令
cat logs.txt查看新创建的logs.txt文件内容,其中logs.txt是日志文件的名称。
观察上述项目中的以下几点:
-
ArtistsContext.cs文件的 第 9 行 创建了StreamWriter类的一个实例。 -
ArtistsContext.cs文件的 第 22 行 将该实例传递给LogTo方法,并调用StreamWriter的WriteLine方法。 -
ArtistsContext.cs文件的 第 30 至 40 行 对StreamWriter实例进行了释放。