Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
        // 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));
        }
Exemplo n.º 3
0
 public LogRequestItem(string id, ModuleLogFilter filter)
 {
     this.Id     = Preconditions.CheckNonWhiteSpace(id, nameof(id));
     this.Filter = filter ?? ModuleLogFilter.Empty;
 }
Exemplo n.º 4
0
 public ModuleLogOptions(LogsContentEncoding contentEncoding, LogsContentType contentType, ModuleLogFilter filter)
 {
     this.ContentEncoding = contentEncoding;
     this.ContentType     = contentType;
     this.Filter          = Preconditions.CheckNotNull(filter, nameof(filter));
 }
Exemplo n.º 5
0
        // 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);
        }