コード例 #1
0
        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++;
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
            }
        }