@using System @using System.Globalization @using System.Linq @using Microsoft.AspNetCore.Diagnostics.Elm @using Microsoft.AspNetCore.Diagnostics.Elm.RazorViews @using Microsoft.Extensions.RazorViews @using Microsoft.Extensions.Logging @functions { public DetailsPage(DetailsPageModel model) { Model = model; } public DetailsPageModel Model { get; set; } public HelperResult LogRow(LogInfo log) { return new HelperResult((writer) => { if (log.Severity >= Model.Options.MinLevel && (string.IsNullOrEmpty(Model.Options.NamePrefix) || log.Name.StartsWith(Model.Options.NamePrefix, StringComparison.Ordinal))) { PushWriter(writer); WriteLiteral(" \r\n "); Write(string.Format("{0:MM/dd/yy}", log.Time)); WriteLiteral("\r\n "); Write(string.Format("{0:H:mm:ss}", log.Time)); var severity = log.Severity.ToString().ToLowerInvariant(); WriteLiteral($"\r\n "); Write(log.Severity); WriteLiteral($"\r\n "); Write(log.Name); WriteLiteral($"\r\n "); Write(log.Message); WriteLiteral($"\r\n "); Write(log.Exception); WriteLiteral("\r\n \r\n"); PopWriter(); } }); } public HelperResult Traverse(ScopeNode node) { return new HelperResult((writer) => { var messageIndex = 0; var childIndex = 0; while (messageIndex < node.Messages.Count && childIndex < node.Children.Count) { if (node.Messages[messageIndex].Time < node.Children[childIndex].StartTime) { LogRow(node.Messages[messageIndex]); messageIndex++; } else { Traverse(node.Children[childIndex]); childIndex++; } } if (messageIndex < node.Messages.Count) { for (var i = messageIndex; i < node.Messages.Count; i++) { LogRow(node.Messages[i]); } } else { for (var i = childIndex; i < node.Children.Count; i++) { Traverse(node.Children[i]); } } }); } } @{ Response.ContentType = "text/html; charset=utf-8"; } ASP.NET Core Logs

ASP.NET Core Logs

@{ var context = Model.Activity?.HttpInfo; } @if (context != null) {

Request Details

Path @context.Path
Host @context.Host
Content Type @context.ContentType
Method @context.Method
Protocol @context.Protocol
Headers @foreach (var header in context.Headers) { }
Variable Value
@header.Key @string.Join(";", header.Value)
Status Code @context.StatusCode
User @context.User.Identity.Name
Claims @if (context.User.Claims.Any()) { @foreach (var claim in context.User.Claims) { }
Issuer Value
@claim.Issuer @claim.Value
}
Scheme @context.Scheme
Query @context.Query.Value
Cookies @if (context.Cookies.Any()) { @foreach (var cookie in context.Cookies) { }
Variable Value
@cookie.Key @string.Join(";", cookie.Value)
}
}

Logs

@Traverse(Model.Activity.Root)
Date Time Severity Name State Error