【问题标题】:Get query logs from MySqlConnector in ASP.NET Core 2.1从 ASP.NET Core 2.1 中的 MySqlConnector 获取查询日志
【发布时间】:2019-12-31 21:33:01
【问题描述】:

如何在 ASP.NET Core 2.1 MVC 应用程序中从 MySqlConnector(与 Dapper 一起使用)获取查询日志?

【问题讨论】:

    标签: c# mysql asp.net-core asp.net-core-2.1


    【解决方案1】:

    使用 NuGet 安装 MySqlConnector.Logging.Microsoft.Extensions.Logging

    # Core CLI
    dotnet add package MySqlConnector.Logging.Microsoft.Extensions.Logging
    # VS package manager
    Install-Package MySqlConnector.Logging.Microsoft.Extensions.Logging
    

    并在Startup.Configure方法中设置提供者:

    var factory = app.ApplicationServices.GetService<ILoggerFactory>();
    MySqlConnectorLogManager.Provider = new MicrosoftExtensionsLoggingLoggerProvider(factory);
    

    更新我发现,当您在托管服务构造函数中运行数据库查询时,必须在调用任何 MySqlConnector 方法之前设置日志记录提供程序。这可以通过在Startup.ConfigureServices 末尾添加来解决:

    var loggerFactory = provider.GetService<ILoggerFactory>();
    MySqlConnectorLogManager.Provider = new MicrosoftExtensionsLoggingLoggerProvider(loggerFactory);
    

    显示日志

    要显示日志,需要将您的日志级别设置为在appsettings.json 中调试。我推荐基于组件的方法,因为将所有内容都设置为调试会导致大量日志。

    对于查询,TextCommandExecutor 负责。我们可以像这样为他启用日志:

    {
      "Logging": {
        "LogLevel": {
          "Default": "warning",
          "TextCommandExecutor": "debug"
        }
      }
    }
    

    示例输出:

    dbug: TextCommandExecutor[0]
          Session1.1 ExecuteBehavior Synchronous CommandText:
                                  SELECT varname, value
                                  FROM setting
                                  WHERE varname IN('bburl', 'recycle_forum', 'maxposts')
    

    查找组件

    可以通过两种方式找到组件名称:

    查看源代码以调用记录器,如下所示:

    static readonly IMySqlConnectorLogger Log = MySqlConnectorLogManager.CreateLogger(nameof(TextCommandExecutor));
    

    设置调试的默认日志级别(仅在小型测试环境中)

    {
      "Logging": {
        "LogLevel": {
          "Default": "debug"
        }
      }
    }
    

    现在您可以看到所有日志并找到级别之后的组件,例如dbug: TextCommandExecutor[0] ...

    来源: https://mysqlconnector.net/overview/logging/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-27
      • 2019-05-08
      • 1970-01-01
      • 2019-05-18
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多