Пример #1
0
        private LogEventInfo CreateLogEntry(
            string nlogLoggerName,
            Guid contextId,
            ContextSummary summary
            )
        {
            var level = NlogLogLevelUtil.ConvertFromMsLogLevel(summary.Level);

            var @event = new LogEventInfo(level, nlogLoggerName, summary.Message);

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

            var timestamp = _memoryLogService.GetTimestamp(contextId);
            var logs      = _memoryLogService.GetMemoryLogsSince(timestamp);

            logs.AddRange(summary.Entries);

            var entries = logs
                          .OrderBy(e => e.Timestamp)
                          .Select(e => new
            {
                Timestamp   = e.Timestamp,
                Level       = NlogLogLevelUtil.ConvertFromMsLogLevel(e.LogLevel).ToString(),
                Message     = e.Message,
                ContextName = e.ContextName,
                ContextId   = e.ContextId,
                e.TimeElapsed
            });

            @event.Properties.Add("entries", entries);

            return(@event);
        }
Пример #2
0
        private void LogContext(IActionContext context)
        {
            if (context.ShouldSuppress())
            {
                return;
            }

            _memoryLogService.GetPendingMemoryLogs();

            var shouldLog = context.GetCheckpoints().Any() || context.Logger.LogEntries.Any();

            if (!shouldLog)
            {
                return;
            }

            var prefix = _config.ContextLogNamePrefix ?? "context_";

            var summaries = ContextSummary.Summarize(context);

            summaries.ForEach(summary =>
            {
                var contextInfo = summary.Data["contextInfo"] as IRootContextInfo;
                var checkpoint  = contextInfo?.Checkpoint;
                checkpoint      = checkpoint == null ? string.Empty : $"_{checkpoint}";

                summary.Data["contextInfo"] = contextInfo == null
                    ? null
                    : new
                {
                    contextInfo.Checkpoint,
                    contextInfo.Id,
                    contextInfo.ContextName,
                    contextInfo.ContextGroupName
                };

                var logger = LogManager.GetLogger($"{prefix}{context.Info.ContextName}{checkpoint}");

                var entry = CreateLogEntry(
                    logger.Name,
                    context.Info.Id,
                    summary
                    );

                logger.Log(entry);
            });

            LogManager.Flush();

            _memoryLogService.RemoveTimestamp(context.Info.Id);
        }
Пример #3
0
        private void LogContext(IActionContext context)
        {
            var shouldLog = context.GetCheckpoints().Any() || context.Logger.LogEntries.Any();

            if (!shouldLog || context.ShouldSuppress())
            {
                return;
            }

            var summaries = ContextSummary.Summarize(context);
            var logLines  = summaries.Select(s =>
                                             JsonConvert.SerializeObject(s, new Newtonsoft.Json.Converters.StringEnumConverter()));

            logLines.ToList().ForEach(Console.WriteLine);
        }
Пример #4
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();
        }
Пример #5
0
 public override void Act()
 {
     Summary = Builder.Build();
 }