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); }
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); }
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); }
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(); }
public override void Act() { Summary = Builder.Build(); }