【问题标题】:WebSocket Middleware for SignalRSignalR 的 WebSocket 中间件
【发布时间】:2020-10-07 17:49:45
【问题描述】:

我们正在尝试创建一个用于日志记录的 Web 套接字中间件。除非您设置了 Debug 集,否则 SignalR 似乎不会进行任何日志记录,而我们并不总是想要这样做。我们想创建一个中间件,以便我们可以捕获通过套接字推送的消息并将它们作为请求记录在 Application Insights 中。

我们发现我们无法连接到 Web 套接字初始化和消息传递。有没有人能够做到这一点?

【问题讨论】:

  • 如果您想捕获并记录所有传入的消息,您可以尝试将 ILogger 注入您的中心服务器,并在中心方法的代码逻辑中写入带有消息的日志。
  • 我正在尝试设置一个横切解决方案,因此我不需要为每个集线器方法重新编写相同的代码。虽然这可行,但会产生大量重复代码

标签: asp.net-core .net-core websocket signalr


【解决方案1】:

您可以在documentation 上看到您可以打开服务器端日志记录。这将为您的 SignalR 集线器启用跟踪。

此外,如果您想要一些自定义日志记录,您只需通过 DI 注入记录器,例如:

private ILogger<INotificationsHub> Logger
{
    get
    {
        return this.serviceProvider.GetRequiredService<ILogger<IYourHub>>();
    }
}

【讨论】:

  • 我正在尝试设置一个横切解决方案,因此我不需要为每个集线器方法重新编写相同的代码。虽然这可行,但会产生大量重复代码
  • 你只需在appsettings.json上配置一次。
  • 正如我在最初的问题中所说,我不想一直调试。我想将集线器操作调用记录为请求,这样我就可以在不记录调试级别的情况下跟踪它们。调试日志包含大量数据并使用 App Insights,这可能会很昂贵
  • 我相信唯一的方法就是注入记录器,我看不到其他选项。等等,也许有人会像你想要的那样回答......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多