如何让MiniProfiler 4登录到Serilog(或在Middleware中访问)?

时间:2017-12-20 08:11:44

标签: asp.net-core serilog miniprofiler

我一直在努力让MiniProfiler.AspNetCore与Serilog.AspNetCore一起使用,或以其他方式记录电话。

我尝试使用.append(word.strip())? 调用

创建中间件
EndInvoke

我正在尝试将其设置为https://daveaglick.com/posts/easy-performance-and-query-logging-in-aspnet-with-serilog-and-miniprofiler类似于使用3.0而不是4.0版本的MiniProfiler,以及aspnet而不是aspnetcore。

编辑:修复了空问题,我在miniprofiler中间件之前创建了我的中间件,但它仍未正确登录到serilog / seq。

1 个答案:

答案 0 :(得分:2)

看起来问题的一部分是我缺少

destructureObjects: true电话

结束时

ForContext()

private void EndInvoke(HttpContext context)
{
    MiniProfiler.Current.Stop();
    if (MiniProfiler.Current != null)
    {
        Log.ForContext("MiniProfiler", JsonConvert.DeserializeObject<object>(MiniProfiler.Current.ToJson()), destructureObjects: true)
            .Debug("Completed request in {Timing} ms", MiniProfiler.Current.DurationMilliseconds);
    }
}

主要原因是......我正在过滤掉发送到我的seq服务器的详细调用...将其更改为调试使它们立即显示出来。

所以希望这个问题可能在将来帮助其他人,但这适用于MiniProfiler 4AspNetCore 2。您需要Destructurama.JsonNet并在.Destructure.JsonNetTypes()上添加LoggerConfiguration(),否则您只会在输出中获得空白项目。