private static void SetUserInfo(SLogDetail detail) { var user = ClaimsPrincipal.Current; if (user == null) { return; } int idx = 0; foreach (var claim in user.Claims) { if (claim.Type == ClaimTypes.Name) { detail.UserName = claim.Value; } else if (claim.Type == ClaimTypes.NameIdentifier) { detail.UserId = claim.Value; } else { detail.AdditionalInfo.Add($"Claim-{claim.Type}-{idx}", claim.Value); } idx++; } }
public override void Log(ExceptionLoggerContext context) { var logentry = new SLogDetail() { CorrelationId = new Guid().ToString(), Product = _productName, Layer = "API", Location = context.Request.RequestUri.AbsoluteUri, Hostname = Environment.MachineName, Exception = context.Exception, UserName = "******" }; SLogger.WriteError(logentry); base.Log(context); }
private static SLogDetail GetSLogDetail(string product, string layer, string activity, HttpContext context, Dictionary <string, object> additionalInfo) { var detail = new SLogDetail() { Product = product, Layer = layer, AdditionalInfo = additionalInfo ?? new Dictionary <string, object>(), CorrelationId = Activity.Current?.Id ?? context.TraceIdentifier, Hostname = Environment.MachineName, }; SetUserInfo(detail); SetRequestData(detail, context); return(detail); }
private static void SetRequestData(SLogDetail detail, HttpContext context) { var request = context.Request; if (request == null) { return; } detail.Location = request.GetDisplayUrl(); if (request.Headers.TryGetValue("User-Agent", out StringValues useragent)) { detail.AdditionalInfo.Add("UserAgent", useragent); } if (request.Headers.TryGetValue("Accepted-Language", out StringValues language)) { detail.AdditionalInfo.Add("Language", language); } var qdict = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(request.QueryString.ToString()); foreach (var kvp in qdict) { detail.AdditionalInfo.Add($"QueryString-{kvp.Key}", kvp.Value); } }