过滤 SignalR ping 消息。

3
在我的ASP.NET SignalR (.NET 7 WebApplication with Serilog)中,日志不断填满以下内容:
[INF] Request starting HTTP/1.1 POST http://127.0.0.1:5000/hubs/agentshub?id=su3OANTvP1YtU2i90eK1rA - 11
[INF] Request finished HTTP/1.1 POST http://127.0.0.1:5000/hubs/agentshub?id=su3OANTvP1YtU2i90eK1rA - 11 - 200 0 text/plain 1.1589ms
由于这些消息前后没有来自中心的其他消息,我认为这只是SignalR内部ping。从更详细的日志记录中似乎可以看出。
我的问题是如何过滤掉这些ping消息,同时保留其他SignalR Hub请求消息?
我尝试了以下方法:
.MinimumLevel.Override("Microsoft.AspNetCore.SignalR", Serilog.Events.LogEventLevel.Debug)
.MinimumLevel.Override("Microsoft.AspNetCore.Http.Connections", Serilog.Events.LogEventLevel.Debug);

但是没有运气。

你是否正在使用ServerSentEvents?这是唯一能在POST中获取ping的方式。你可以考虑使用WebSockets或LongPolling来完全避免这种情况。 - Brennan
不,我没有使用服务器发送事件。 - kofifus
1个回答

0
dotnet add package Serilog.Expressions

然后:

    .Filter.ByExcluding("RequestPath like '/hubs/agentshub%'")

(根据事件的结构/识别ping的准确方式,您可能需要调整表达式。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接