public ModuleLogOptions( LogsContentEncoding contentEncoding, LogsContentType contentType, ModuleLogFilter filter, LogOutputFraming outputFraming, Option <LogsOutputGroupingConfig> outputGroupingConfig, bool follow) { this.ContentEncoding = contentEncoding; this.ContentType = contentType; this.Filter = Preconditions.CheckNotNull(filter, nameof(filter)); this.OutputFraming = outputFraming; this.OutputGroupingConfig = outputGroupingConfig; this.Follow = follow; }
// Gzip encoding or output framing don't apply to this method. public async Task <IReadOnlyList <string> > GetText(string id, Stream stream, ModuleLogFilter filter) { Preconditions.CheckNotNull(stream, nameof(stream)); Preconditions.CheckNotNull(filter, nameof(filter)); Preconditions.CheckNonWhiteSpace(id, nameof(id)); IRunnableGraph <Task <IImmutableList <string> > > GetGraph() { if (filter.Regex.HasValue || filter.LogLevel.HasValue) { GraphBuilder graphBuilder = GraphBuilder.CreateParsingGraphBuilder(stream, b => this.logMessageParser.Parse(b, id)); filter.LogLevel.ForEach(l => graphBuilder.AddFilter(m => m.LogLevel == l)); filter.Regex.ForEach(r => graphBuilder.AddFilter(m => r.IsMatch(m.Text))); return(graphBuilder.GetMaterializingGraph(m => m.FullText)); } else { return(GraphBuilder.BuildMaterializedGraph(stream)); } } IRunnableGraph <Task <IImmutableList <string> > > graph = GetGraph(); IImmutableList <string> result = await graph.Run(this.materializer); return(filter.Tail.Match <IReadOnlyList <string> >( t => { return result.Skip(Math.Max(0, result.Count - t)).ToList().AsReadOnly(); }, () => result)); }
public LogRequestItem(string id, ModuleLogFilter filter) { this.Id = Preconditions.CheckNonWhiteSpace(id, nameof(id)); this.Filter = filter ?? ModuleLogFilter.Empty; }
public ModuleLogOptions(LogsContentEncoding contentEncoding, LogsContentType contentType, ModuleLogFilter filter) { this.ContentEncoding = contentEncoding; this.ContentType = contentType; this.Filter = Preconditions.CheckNotNull(filter, nameof(filter)); }
// Gzip encoding or output framing don't apply to this method. public async Task <IReadOnlyList <ModuleLogMessage> > GetMessages(string id, Stream stream, ModuleLogFilter filter) { Preconditions.CheckNotNull(stream, nameof(stream)); Preconditions.CheckNotNull(filter, nameof(filter)); Preconditions.CheckNonWhiteSpace(id, nameof(id)); GraphBuilder graphBuilder = GraphBuilder.CreateParsingGraphBuilder(stream, b => this.logMessageParser.Parse(b, id)); filter.LogLevel.ForEach(l => graphBuilder.AddFilter(m => m.LogLevel == l)); filter.Regex.ForEach(r => graphBuilder.AddFilter(m => r.IsMatch(m.Text))); IRunnableGraph <Task <IImmutableList <ModuleLogMessage> > > graph = graphBuilder.GetMaterializingGraph(m => (ModuleLogMessage)m); IImmutableList <ModuleLogMessage> result = await graph.Run(this.materializer); return(result); }