Esempio n. 1
0
        public async Task Flush()
        {
            while (true)
            {
                var dequeueSize = events.Count < _settings.Value.BatchSize ?
                                  events.Count :
                                  _settings.Value.BatchSize;

                var chunk = events
                            .DequeueChunk(dequeueSize)
                            .ToList();

                if (!chunk.Any())
                {
                    break;
                }


                var path = Path.Combine(
                    CommonHelper.MapPath(_packStoreOptions.TempStorePath),
                    $"{CommonHelper.NewSequentialGuid().ToString()}.log");
                MessagePackHelper.ToPack(path, chunk);

                await Task.CompletedTask;
            }
        }
    public Task FromStreamAsync(int iteration)
    {
        var jilStreamAsync            = JilHelper.ToStream(_testModel);
        var messagePackStreamAsync    = MessagePackHelper.ToStream(_testModel);
        var msgPackStreamAsync        = MsgPackHelper.ToStream(_testModel);
        var newtonsoftJsonStreamAsync = NewtonsoftJsonHelper.ToStream(_testModel);
        var systemTextJsonStreamAsync = SystemTextJsonHelper.ToStream(_testModel);
        var utf8JsonStreamAsync       = Utf8JsonHelper.ToStream(_testModel);

        Console.WriteLine("FromStreamAsync go!");

        Runner.Initialize();

        Console.WriteLine(Runner.Time("JilHelper FromStreamAsync", iteration,
                                      async() => await JilHelper.FromStreamAsync <TestModel>(jilStreamAsync)));
        Console.WriteLine(Runner.Time("MessagePackHelper FromStreamAsync", iteration,
                                      async() => await MessagePackHelper.FromStreamAsync <TestModel>(messagePackStreamAsync)));
        Console.WriteLine(Runner.Time("MsgPackHelper FromStreamAsync", iteration,
                                      async() => await MsgPackHelper.FromStreamAsync <TestModel>(msgPackStreamAsync)));
        Console.WriteLine(Runner.Time("NewtonsoftJsonHelper FromStreamAsync", iteration,
                                      async() => await NewtonsoftJsonHelper.FromStreamAsync <TestModel>(newtonsoftJsonStreamAsync)));
        Console.WriteLine(Runner.Time("SystemTextJsonHelper FromStreamAsync", iteration,
                                      async() => await SystemTextJsonHelper.FromStreamAsync <TestModel>(systemTextJsonStreamAsync)));
        Console.WriteLine(Runner.Time("Utf8JsonHelper FromStreamAsync", iteration,
                                      async() => await Utf8JsonHelper.FromStreamAsync <TestModel>(utf8JsonStreamAsync)));

        Console.WriteLine("\r\nFromStreamAsync complete!\r\n");

        return(Task.CompletedTask);
    }
Esempio n. 3
0
        private static async Task Time(ILogger <Program> logger, MonitorOptions options)
        {
            try {
                logger.LogInformation("开始批量处理TimeData Log文件");

                var files = ListFiles(Path.Combine(options.FindTimeDataLogPath, "extract"));
                foreach (var file in files)
                {
                    logger.LogInformation("正在处理Time Log文件:" + file.Name);

                    var path = CommonHelper.MapPath(file.FullName);
                    var data = MessagePackHelper.ToObject <List <TimeData> >(path);
                    if (data.Any())
                    {
                        foreach (var g in data.GroupBy(g => g.RequestGroup))
                        {
                            timeStore.AddRang(g.Key, g.ToList());
                        }
                        data = null;
                    }

                    File.Delete(file.FullName);
                }

                logger.LogInformation("结束这批处理Time Log文件,共:" + files.Count());
            }
            catch (Exception ex) {
                logger.LogError("Syinpo.Monitor.Processor Time Log 错误:" + ex.Message);
            }

            await Task.CompletedTask;
        }
Esempio n. 4
0
    public void FromStream(int iteration)
    {
#pragma warning disable CS0618
        var binaryStream = BinaryHelper.ToStream(_testModel);
#pragma warning restore CS0618
        var dataContractStream   = DataContractHelper.ToStream(_testModel);
        var jilStream            = JilHelper.ToStream(_testModel);
        var messagePackStream    = MessagePackHelper.ToStream(_testModel);
        var msgPackStream        = MsgPackHelper.ToStream(_testModel);
        var newtonsoftJsonStream = NewtonsoftJsonHelper.ToStream(_testModel);
        var protobufStream       = ProtobufHelper.ToStream(_testModel);
        var sharpYamlStream      = SharpYamlHelper.ToStream(_testModel);
        var systemTextJsonStream = SystemTextJsonHelper.ToStream(_testModel);
        var utf8JsonStream       = Utf8JsonHelper.ToStream(_testModel);
        var xmlStream            = XmlHelper.ToStream(_testModel);
        var yamlDotNetStream     = YamlDotNetHelper.ToStream(_testModel);
        var zeroFormatterStream  = ZeroFormatterHelper.ToStream(_testModel);

        Console.WriteLine("FromStream go!");

        Runner.Initialize();

        Console.WriteLine(Runner.Time("BinaryHelper FromStream", iteration,
#pragma warning disable CS0618
                                      () => BinaryHelper.FromStream <TestModel>(binaryStream)));
#pragma warning restore CS0618
        Console.WriteLine(Runner.Time("DataContractHelper FromStream", iteration,
                                      () => DataContractHelper.FromStream <TestModel>(dataContractStream)));
        Console.WriteLine(Runner.Time("JilHelper FromStream", iteration,
                                      () => JilHelper.FromStream <TestModel>(jilStream)));
        Console.WriteLine(Runner.Time("MessagePackHelper FromStream", iteration,
                                      () => MessagePackHelper.FromStream <TestModel>(messagePackStream)));
        Console.WriteLine(Runner.Time("MsgPackHelper FromStream", iteration,
                                      () => MsgPackHelper.FromStream <TestModel>(msgPackStream)));
        Console.WriteLine(Runner.Time("NewtonsoftJsonHelper FromStream", iteration,
                                      () => NewtonsoftJsonHelper.FromStream <TestModel>(newtonsoftJsonStream)));
        Console.WriteLine(Runner.Time("ProtobufHelper FromStream", iteration,
                                      () => ProtobufHelper.FromStream <TestModel>(protobufStream)));
        Console.WriteLine(Runner.Time("SharpYamlHelper FromStream", iteration,
                                      () => SharpYamlHelper.FromStream <TestModel>(sharpYamlStream)));
        Console.WriteLine(Runner.Time("SystemTextJsonHelper FromStream", iteration,
                                      () => SystemTextJsonHelper.FromStream <TestModel>(systemTextJsonStream)));
        Console.WriteLine(Runner.Time("Utf8JsonHelper FromStream", iteration,
                                      () => Utf8JsonHelper.FromStream <TestModel>(utf8JsonStream)));
        Console.WriteLine(Runner.Time("XmlHelper FromStream", iteration,
                                      () => XmlHelper.FromStream <TestModel>(xmlStream)));
        Console.WriteLine(Runner.Time("YamlDotNetHelper FromStream", iteration,
                                      () => YamlDotNetHelper.FromStream <TestModel>(yamlDotNetStream)));
        Console.WriteLine(Runner.Time("ZeroFormatterHelper FromStream", iteration,
                                      () => ZeroFormatterHelper.FromStream <TestModel>(zeroFormatterStream)));

        Console.WriteLine("\r\nFromStream complete!\r\n");
    }
Esempio n. 5
0
        private static async Task Log(ILogger <Program> logger, MonitorOptions options)
        {
            try {
                logger.LogInformation("开始批量处理Request Log文件");


                var files = ListFiles(Path.Combine(options.FindRequestLogPath, "extract"));
                foreach (var file in files)
                {
                    logger.LogInformation("正在处理Request Log文件:" + file.Name);

                    try
                    {
                        var path = CommonHelper.MapPath(file.FullName);
                        var data = MessagePackHelper.ToObject <List <HttpLog> >(path);
                        if (data.Any())
                        {
                            var dbContext = IoC.Resolve <IDbContext>("monitor_dbcontext");
                            var result    = data.MapToList <RequestLog>();
                            await IoC.Resolve <IGenericRepository <RequestLog> >().CreateRange(result);
                        }
                    }
                    catch (Exception ex)
                    {
                        logger.LogError("Syinpo.Monitor.Processor Request Log 错误:" + ex.Message + ex.InnerException?.Message);
                    }

                    File.Delete(file.FullName);
                }

                logger.LogInformation("结束这批处理Request Log文件,共:" + files.Count());

                await Task.CompletedTask;
            }
            catch (Exception ex) {
                logger.LogError("Syinpo.Monitor.Processor Request Log 错误:" + ex.Message);
            }
        }
    public void ToStream(int iteration)
    {
        Console.WriteLine("ToStream go!");

        Runner.Initialize();

        Console.WriteLine(Runner.Time("BinaryHelper ToStream", iteration,
#pragma warning disable CS0618
                                      () => BinaryHelper.ToStream(_testModel)));
#pragma warning restore CS0618
        Console.WriteLine(Runner.Time("DataContractHelper ToStream", iteration,
                                      () => DataContractHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("JilHelper ToStream", iteration,
                                      () => JilHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("MessagePackHelper ToStream", iteration,
                                      () => MessagePackHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("MsgPackHelper ToStream", iteration,
                                      () => MsgPackHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("NewtonsoftJsonHelper ToStream", iteration,
                                      () => NewtonsoftJsonHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("ProtobufHelper ToStream", iteration,
                                      () => ProtobufHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("SharpYamlHelper ToStream", iteration,
                                      () => SharpYamlHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("SystemTextJsonHelper ToStream", iteration,
                                      () => SystemTextJsonHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("Utf8JsonHelper ToStream", iteration,
                                      () => Utf8JsonHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("XmlHelper ToStream", iteration,
                                      () => XmlHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("YamlDotNetHelper ToStream", iteration,
                                      () => YamlDotNetHelper.ToStream(_testModel)));
        Console.WriteLine(Runner.Time("ZeroFormatterHelper ToStream", iteration,
                                      () => ZeroFormatterHelper.ToStream(_testModel)));

        Console.WriteLine("\r\nToStream complete!\r\n");
    }
Esempio n. 7
0
 public static byte[] ToBytes <TValue>(this TValue?value, MessagePackSerializerOptions?options = null,
                                       CancellationToken cancellationToken = default) =>
 MessagePackHelper.ToBytes(value, options, cancellationToken);
Esempio n. 8
0
 public static Task PackToAsync(this object?value, Type type, Stream?stream,
                                MessagePackSerializerOptions?options = null, CancellationToken cancellationToken = default) =>
 MessagePackHelper.PackAsync(type, value, stream, options, cancellationToken);
Esempio n. 9
0
 public static Task PackToAsync <TValue>(this TValue?value, Stream?stream,
                                         MessagePackSerializerOptions?options = null, CancellationToken cancellationToken = default) =>
 MessagePackHelper.PackAsync(value, stream, options, cancellationToken);
Esempio n. 10
0
 public static MemoryStream ToStream(this object?value, Type type, MessagePackSerializerOptions?options = null,
                                     CancellationToken cancellationToken = default) =>
 MessagePackHelper.ToStream(type, value, options, cancellationToken);
Esempio n. 11
0
 public static ValueTask <object?> FromStreamAsync(this Stream?stream, Type type,
                                                   MessagePackSerializerOptions?options = null, CancellationToken cancellationToken = default) =>
 MessagePackHelper.FromStreamAsync(type, stream, options, cancellationToken);
Esempio n. 12
0
 public static MemoryStream ToStream <TValue>(this TValue?value, MessagePackSerializerOptions?options = null,
                                              CancellationToken cancellationToken = default) =>
 MessagePackHelper.ToStream(value, options, cancellationToken);
 public static TValue?FromBytes <TValue>(this ReadOnlyMemory <byte> bytes,
                                         MessagePackSerializerOptions?options = null, CancellationToken cancellationToken = default) =>
 MessagePackHelper.FromBytes <TValue>(bytes, options, cancellationToken);
Esempio n. 14
0
 public static ValueTask <TValue?> FromStreamAsync <TValue>(this Stream?stream,
                                                            MessagePackSerializerOptions?options = null, CancellationToken cancellationToken = default) =>
 MessagePackHelper.FromStreamAsync <TValue>(stream, options, cancellationToken);
 public static T FromMessagePack <T>(this byte[] bytes)
 {
     return(MessagePackHelper.Deserialize <T>(bytes));
 }
Esempio n. 16
0
 public static void PackBy(this Stream?stream, Type type, object?value,
                           MessagePackSerializerOptions?options = null, CancellationToken cancellationToken = default) =>
 MessagePackHelper.Pack(type, value, stream, options, cancellationToken);
Esempio n. 17
0
 public static void PackBy <TValue>(this Stream?stream, TValue?value, MessagePackSerializerOptions?options = null,
                                    CancellationToken cancellationToken = default) =>
 MessagePackHelper.Pack(value, stream, options, cancellationToken);
 public static object?FromBytes(this ReadOnlyMemory <byte> bytes, Type type,
                                MessagePackSerializerOptions?options = null, CancellationToken cancellationToken = default) =>
 MessagePackHelper.FromBytes(type, bytes, options, cancellationToken);
Esempio n. 19
0
        private static async Task Log(ILogger <Program> logger, MonitorOptions options)
        {
            logger.LogInformation("开始批量处理Log文件");

            var files = ListFiles(Path.Combine(options.FindResponseLogPath, "extract"));

            foreach (var file in files)
            {
                logger.LogInformation("正在处理Log文件:" + file.Name);

                var path = CommonHelper.MapPath(file.FullName);
                var data = MessagePackHelper.ToObject <List <MonitorEvent> >(path);

                var resultResponse = new List <ResponseSnap>();
                var resultSql      = new List <SqlSnap>();
                var resultError    = new List <ExceptionSnap>();
                var resultTrace    = new List <TrackSnap>();
                foreach (var item in data)
                {
                    var traceId = GetValue <string>(item.Data, MonitorKeys.trace_id);

                    if (item.EventType == RequestTypeEnum.Http.ToString().ToLowerInvariant())
                    {
                        var snap = PreResponse(item, traceId);
                        resultResponse.Add(snap);
                    }
                    else if (item.EventType == RequestTypeEnum.Signalr.ToString().ToLowerInvariant())
                    {
                        var snap = PreResponse(item, traceId);
                        resultResponse.Add(snap);
                    }
                    else if (item.EventType == RequestTypeEnum.Sql.ToString().ToLowerInvariant())
                    {
                        var snap = PreSql(item, traceId);
                        resultSql.Add(snap);
                    }
                    else
                    {
                        var snap = PreTrace(item, traceId);
                        if (snap != null)
                        {
                            resultTrace.Add(snap);
                        }
                        else
                        {
                            logger.LogWarning("事件{0},得EventType为{1},不正确", traceId, item.EventType);
                            continue;
                        }
                    }


                    if (item.Data.ContainsKey(MonitorKeys.request_error))
                    {
                        var source       = GetValue <string>(item.Data, MonitorKeys.request_error);
                        var errormessage = GetValue <string>(item.Data, MonitorKeys.request_errordetail);

                        var snap = new ExceptionSnap
                        {
                            TraceId     = traceId,
                            ErrorSource = source,
                            ErrorDetail = errormessage,
                            CreateTime  = DateTime.Now
                        };

                        resultError.Add(snap);
                    }
                }

                var dbContext = IoC.Resolve <IDbContext>("monitor_dbcontext");
                if (resultResponse.Any())
                {
                    await IoC.Resolve <IGenericRepository <ResponseSnap> >().CreateRange(resultResponse);
                }
                if (resultSql.Any())
                {
                    await IoC.Resolve <IGenericRepository <SqlSnap> >().CreateRange(resultSql);
                }
                if (resultError.Any())
                {
                    await IoC.Resolve <IGenericRepository <ExceptionSnap> >().CreateRange(resultError);
                }
                if (resultTrace.Any())
                {
                    await IoC.Resolve <IGenericRepository <TrackSnap> >().CreateRange(resultTrace);
                }

                File.Delete(file.FullName);
            }

            logger.LogInformation("结束这批处理Log文件,共:" + files.Count());

            await Task.CompletedTask;
        }
Esempio n. 20
0
 public static byte[] ToMessagePack <T>(this T obj)
 {
     return(MessagePackHelper.Serialize(obj));
 }
Esempio n. 21
0
 public static byte[] ToBytes(this object?value, Type type, MessagePackSerializerOptions?options = null,
                              CancellationToken cancellationToken = default) =>
 MessagePackHelper.ToBytes(type, value, options, cancellationToken);