Example #1
0
        protected override async Task <int> Run()
        {
            var cancel = new CancellationTokenSource();

            Console.CancelKeyPress += (s, a) => cancel.Cancel();

            var connection = _connectionFactory.Connect(_connection);

            string strict = null;

            if (!string.IsNullOrWhiteSpace(_filter))
            {
                var converted = await connection.Expressions.ToStrictAsync(_filter, cancel.Token);

                strict = converted.StrictExpression;
            }

            using var output = _output.CreateOutputLogger();
            using var stream = await connection.Events.StreamAsync <JObject>(
                      filter : strict,
                      signal : _signal.Signal,
                      cancellationToken : cancel.Token);

            var subscription = stream
                               .Select(JsonLogEventReader.ReadFromJObject)
                               // ReSharper disable once AccessToDisposedClosure
                               .Subscribe(evt => output.Write(evt), () => cancel.Cancel());

            cancel.Token.WaitHandle.WaitOne();
            subscription.Dispose();

            return(0);
        }
Example #2
0
        protected override async Task <int> Run()
        {
            try
            {
                using var output = _output.CreateOutputLogger();
                var connection = _connectionFactory.Connect(_connection);
                connection.Client.HttpClient.Timeout = TimeSpan.FromMilliseconds(_httpClientTimeout);

                string?filter = null;
                if (!string.IsNullOrWhiteSpace(_filter))
                {
                    filter = (await connection.Expressions.ToStrictAsync(_filter)).StrictExpression;
                }

                await foreach (var evt in connection.Events.EnumerateAsync(null,
                                                                           _signal.Signal,
                                                                           filter,
                                                                           _count,
                                                                           fromDateUtc: _range.Start,
                                                                           toDateUtc: _range.End))
                {
                    output.Write(ToSerilogEvent(evt));
                }

                return(0);
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Could not retrieve search result: {ErrorMessage}", ex.Message);
                return(1);
            }
        }
Example #3
0
        protected override async Task <int> Run()
        {
            try
            {
                using (var output = _output.CreateOutputLogger())
                {
                    var connection = _connectionFactory.Connect(_connection);

                    string filter = null;
                    if (!string.IsNullOrWhiteSpace(_filter))
                    {
                        filter = (await connection.Expressions.ToStrictAsync(_filter)).StrictExpression;
                    }

                    string lastReadEventId = null;
                    var    remaining       = _count;
                    while (remaining > 0)
                    {
                        var resultSet = await connection.Events.InSignalAsync(
                            null,
                            _signal.Signal,
                            filter : filter,
                            count : remaining,
                            fromDateUtc : _range.Start,
                            toDateUtc : _range.End,
                            afterId : lastReadEventId);

                        foreach (var evt in resultSet.Events)
                        {
                            remaining++;
                            output.Write(ToSerilogEvent(evt));
                        }

                        if (resultSet.Statistics.Status != ResultSetStatus.Partial)
                        {
                            break;
                        }

                        lastReadEventId = resultSet.Statistics.LastReadEventId;
                    }
                }

                return(0);
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Could not retrieve search result: {ErrorMessage}", ex.Message);
                return(1);
            }
        }