public LogCastDocument Create(LogCastContext context, IEnumerable <ILogDispatchInspector> dispatchInspectors) { // Many messages will have no properties so we create aggregator only when necessary PropertyAccumulator accumulator = null; if (!context.Properties.IsEmpty) { accumulator = new PropertyAccumulator(); accumulator.AddProperties(context.Properties); } var summaryBuilder = new ContextSummaryBuilder(context, _detailsFormatter, context.BranchHistory); foreach (var message in context.PendingMessages) { if (message.Properties?.Length > 0) { if (accumulator == null) { accumulator = new PropertyAccumulator(); } accumulator.AddProperties(message.Properties); } summaryBuilder.AddMessage(message); } var summary = summaryBuilder.Build(); var document = new LogCastDocument(); ApplyContext(document, context, summary); // Apply properties after context so that client could override standard properties accumulator?.Apply(document); foreach (var inspector in dispatchInspectors) { inspector.BeforeSend(document, context); } document.AddProperty(Property.Durations.Name, Property.Durations.Total, (int)context.Elapsed.TotalMilliseconds); return(document); }
public LogCastDocument Create(LogMessage message, IEnumerable <ILogDispatchInspector> dispatchInspectors) { var document = new LogCastDocument(); ApplyMessage(document, message); if (message.Properties?.Length > 0) { var accumulator = new PropertyAccumulator(); accumulator.AddProperties(message.Properties); accumulator.Apply(document); } foreach (var inspector in dispatchInspectors) { inspector.BeforeSend(document, message); } return(document); }