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; }
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); } }
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; }