private string AddSpacing(ContextLogEntry entry)
        {
            var spacing = "";

            for (var x = 0; x < entry.ContextDepth; x++)
            {
                spacing += "\t";
            }

            return(spacing + entry.Message);
        }
示例#2
0
        private void LogEntry(ActionContext context, ContextLogEntry entry)
        {
            var logger = LogManager.GetLogger(entry.ContextName);

            var level       = ConvertLogLevel(entry.LogLevel);
            var eventParams = GetEventParams(context, entry);

            var e = new LogEventInfo(level, logger.Name, entry.Message);

            eventParams.ToList().ForEach(x => e.Properties.Add(x.Key, x.Value));

            logger.Log(e);
        }
示例#3
0
        private void LogEntry(ActionContext context, ContextLogEntry entry)
        {
            var prefix = _config.EntryLogNamePrefix ?? "entry_";
            var logger = LogManager.GetLogger(prefix + entry.ContextName);

            var level       = ConvertFromMsLogLevel(entry.LogLevel);
            var eventParams = GetEventParams(context, false, entry);

            var e = new LogEventInfo(level, logger.Name, entry.Message);

            eventParams.ToList().ForEach(x => e.Properties.Add(x.Key, x.Value));

            logger.Log(e);
        }
示例#4
0
        private string AddSpacing(ContextLogEntry entry)
        {
            if (_config?.AddSpacingToEntries == null || !_config.AddSpacingToEntries)
            {
                return(entry.Message);
            }

            var spacing = "";

            for (var x = 0; x < entry.ContextDepth; x++)
            {
                spacing += "\t";
            }

            return(spacing + entry.Message);
        }
示例#5
0
        private IDictionary <object, object> GetEventParams(ActionContext context, ContextLogEntry entry = null)
        {
            var result = new Dictionary <object, object>();

            result.Add("contextDepth", entry?.ContextDepth ?? context.Depth);
            result.Add("contextName", entry?.ContextName ?? context.ContextName);
            result.Add("timeElapsed", entry?.TimeElapsed ?? context.TimeElapsed);

            var sanitizedParams = context.State.Params
                                  .Select(p => new KeyValuePair <string, object>($"{p.Key.Substring(0, 1).ToLower()}{p.Key.Substring(1)}", p.Value))
                                  .Where(p => p.Value != null)
                                  .ToList();

            sanitizedParams.ForEach(p => result.Add(p.Key, p.Value));

            return(result);
        }
示例#6
0
        private void LogEntry(IActionContext context, ContextLogEntry entry)
        {
            _memoryLogService.GetPendingMemoryLogs();

            var prefix = _config.EntryLogNamePrefix ?? "entry_";
            var logger = LogManager.GetLogger(prefix + entry.ContextName);

            var level   = NlogLogLevelUtil.ConvertFromMsLogLevel(entry.LogLevel);
            var summary = ContextSummary.CreateFromContext(context);

            var e = new LogEventInfo(level, logger.Name, entry.Message);

            summary.Data.ToList().ForEach(x => e.Properties.Add(x.Key, x.Value));

            logger.Log(e);
            LogManager.Flush();
        }
        private ContextLogEntry GetSummaryLogEntry(ActionContext context)
        {
            var entries = context.Logger.LogEntries.ToList();

            var search = new[] {
                LogLevel.Critical,
                LogLevel.Error,
                LogLevel.Warning,
                LogLevel.Information,
                LogLevel.Debug,
                LogLevel.Trace,
            };

            IEnumerable <ContextLogEntry> highest = null;

            foreach (var level in search)
            {
                highest = entries.Where(entry => entry.LogLevel == level);

                if (highest.Any())
                {
                    break;
                }
            }

            var highestLevel = highest.FirstOrDefault()?.LogLevel ?? LogLevel.Trace;
            var message      = $"The context '{context.ContextName}' ended without error.";

            if (highestLevel == LogLevel.Error || highestLevel == LogLevel.Critical)
            {
                message = highest.Count() == 1
                    ? $"The context '{context.ContextName}' ended with an error. {highest.First().Message}"
                    : $"The context '{context.ContextName}' ended with multiple errors.";
            }
            else if (highestLevel == LogLevel.Warning)
            {
                message = highest.Count() == 1
                    ? $"The context '{context.ContextName}' ended with a warning. {highest.First().Message}"
                    : $"The context '{context.ContextName}' ended with multiple warnings.";
            }

            var result = new ContextLogEntry(0, context.ContextName, message, highestLevel, context.TimeElapsed);

            return(result);
        }