public async Task <HttpTrackerResponse> InsertAsync(HttpTrackerLog httpTrackerLog) { var response = new HttpTrackerResponse(); if (httpTrackerLog == null) { response.IsFailed("HttpTrackerLog is null"); return(response); } try { var collection = Database.GetCollection <HttpTrackerLog>(CollectionName); // 解决时区问题 httpTrackerLog.CreationTime = DateTime.SpecifyKind(httpTrackerLog.CreationTime, DateTimeKind.Utc); await collection.InsertOneAsync(httpTrackerLog); } catch (Exception ex) { response.IsFailed(ex); } return(response); }
public async Task <HttpTrackerResponse> InsertAsync(HttpTrackerLog httpTrackerLog) { var response = new HttpTrackerResponse(); if (httpTrackerLog == null) { response.IsFailed("HttpTrackerLog is null"); return(response); } try { await Client.IndexAsync(httpTrackerLog, x => x.Index(IndexName)); } catch (Exception ex) { response.IsFailed(ex); } return(response); }
public async Task InsertAsync() { var factory = Services.BuildServiceProvider().GetRequiredService <IHttpTrackerLogRepositoryFactory>(); var repository = factory.CreateInstance(HttpTrackerInstance.InstanceName); Assert.NotNull(repository); var log = new HttpTrackerLog { Type = HttpTrackerLog.Types.Debug, Description = "this is a test", UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.85 Safari/537.36 Edg/84.0.522.35", Method = "GET", Url = "https://meowv.com", Referrer = "https://meowv.com", IpAddress = "192.168.1.111", Milliseconds = new Random().Next(1, 9999), QueryString = "", RequestBody = "", Cookies = "", Headers = "", StatusCode = 200, ResponseBody = "我是返回数据", ServerName = "test", PId = Process.GetCurrentProcess()?.Id, Host = "192.168.1.1", Port = 5000, ExceptionType = "", Message = "", StackTrace = "" }; var response = await repository.InsertAsync(log); Assert.True(response.Success); }
public async Task <HttpTrackerResponse> InsertAsync(HttpTrackerLog httpTrackerLog) { var response = new HttpTrackerResponse(); if (httpTrackerLog == null) { response.IsFailed("HttpTrackerLog is null"); return(response); } try { var sql = $@"INSERT INTO {TableName}(Type ,Description ,UserAgent ,Method ,Url ,Referrer ,IpAddress ,Milliseconds ,QueryString ,RequestBody ,Cookies ,Headers ,StatusCode ,ResponseBody ,ServerName ,PId ,Host ,Port ,ExceptionType ,Message ,StackTrace ,CreationTime) VALUES (@Type, @Description, @UserAgent, @Method, @Url, @Referrer, @IpAddress, @Milliseconds, @QueryString, @RequestBody, @Cookies, @Headers, @StatusCode, @ResponseBody, @ServerName, @PId, @Host, @Port, @ExceptionType, @Message, @StackTrace, @CreationTime);"; using var conn = _dbConnectionProvider.Connection; await conn.ExecuteAsync(sql, httpTrackerLog); } catch (Exception ex) { response.IsFailed(ex); } return(response); }
public async Task <HttpTrackerResponse> InsertAsync(HttpTrackerLog httpTrackerLog) { var response = new HttpTrackerResponse(); if (httpTrackerLog == null) { response.IsFailed("HttpTrackerLog is null"); return(response); } try { var sql = $@"INSERT INTO [dbo].[{TableName}] ([Type] ,[Description] ,[UserAgent] ,[Method] ,[Url] ,[Referrer] ,[IpAddress] ,[Milliseconds] ,[QueryString] ,[RequestBody] ,[Cookies] ,[Headers] ,[StatusCode] ,[ResponseBody] ,[ServerName] ,[PId] ,[Host] ,[Port] ,[ExceptionType] ,[Message] ,[StackTrace] ,[CreationTime]) VALUES (@Type, @Description, @UserAgent, @Method, @Url, @Referrer, @IpAddress, @Milliseconds, @QueryString, @RequestBody, @Cookies, @Headers, @StatusCode, @ResponseBody, @ServerName, @PId, @Host, @Port, @ExceptionType, @Message, @StackTrace, @CreationTime);"; using var conn = _dbConnectionProvider.Connection; await conn.ExecuteAsync(sql, httpTrackerLog); } catch (Exception ex) { response.IsFailed(ex); } return(response); }
public async Task <HttpTrackerResponse> InsertAsync(HttpTrackerLog httpTrackerLog) { var response = new HttpTrackerResponse(); if (httpTrackerLog == null) { response.IsFailed("HttpTrackerLog is null"); return(response); } try { var sql = $@"INSERT INTO `{TableName}`(`Type`, `Description`, `UserAgent`, `Method`, `Url`, `Referrer`, `IpAddress`, `Milliseconds`, `QueryString`, `RequestBody`, `Cookies`, `Headers`, `StatusCode`, `ResponseBody`, `ServerName`, `PId`, `Host`, `Port`, `ExceptionType`, `Message`, `StackTrace`, `CreationTime`) VALUES (@Type, @Description, @UserAgent, @Method, @Url, @Referrer, @IpAddress, @Milliseconds, @QueryString, @RequestBody, @Cookies, @Headers, @StatusCode, @ResponseBody, @ServerName, @PId, @Host, @Port, @ExceptionType, @Message, @StackTrace, @CreationTime);"; using var conn = _dbConnectionProvider.Connection; await conn.ExecuteAsync(sql, httpTrackerLog); } catch (Exception ex) { response.IsFailed(ex); } return(response); }
public Task <HttpTrackerResponse> InsertAsync(HttpTrackerLog httpTrackerLog) { throw new NotImplementedException(); }
public async Task InvokeAsync(HttpContext context) { var endpoint = context.Features.Get <IEndpointFeature>()?.Endpoint; if (endpoint == null || FilterRequest(context) || DisabledRequestTracker(endpoint, out string description)) { await _next(context); return; } var originalBodyStream = context.Response.Body; var responseMemoryStream = new MemoryStream(); var stopwatch = Stopwatch.StartNew(); stopwatch.Start(); try { context.Response.Body = responseMemoryStream; await _next(context); } catch (Exception ex) { log.ExceptionType = ex?.GetType().ToString(); log.Message = ex?.Message; log.StackTrace = ex?.StackTrace; } finally { stopwatch.Stop(); log = new HttpTrackerLog() { Type = HttpTrackerLog.Types.Debug, Description = description, UserAgent = context.GetUserAgent(), Method = context.GetHttpMethod(), Url = context.GetAbsoluteUri(), Referrer = context.GetReferer(), IpAddress = context.GetIpAddress(), Milliseconds = Convert.ToInt32(stopwatch.ElapsedMilliseconds), QueryString = context.GetQueryString(), RequestBody = await context.GetRequestBodyAsync(), Cookies = context.GetCookies(), Headers = context.GetHeaders(), StatusCode = context.GetStatusCode(), ResponseBody = await context.GetResponseBodyAsync(), ServerName = Options.ServerName, PId = Process.GetCurrentProcess()?.Id, Host = Options.ServerHost, Port = Options.ServerPort }; await responseMemoryStream.CopyToAsync(originalBodyStream); responseMemoryStream.Dispose(); var repository = _factory.CreateInstance(HttpTrackerInstance.InstanceName); await repository.InsertAsync(log); } }