public async Task Invoke(HttpContext httpContext) { var sw = Stopwatch.StartNew(); try { await _next(httpContext); sw.Stop(); } catch (Exception) { sw.Stop(); } finally { var item = new RequestLogItem(); item.RequestMethod = httpContext.Request.Method; item.RequestPath = httpContext.Request.Path; item.StatusCode = httpContext.Response?.StatusCode; item.Elapsed = sw.Elapsed.ToString(); item.RequestID = httpContext.TraceIdentifier; var logs = _db.GetCollection <RequestLogItem>("RequestLogs"); logs.Insert(item); } }
public void Construct_GivenNullMessage_ShouldSetMessageFromStatusCodeString() { //---------------Set up test pack------------------- var path = GetRandomString(); var code = GetRandom <HttpStatusCode>(); var method = GetRandomString(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var sut = new RequestLogItem(path, code, method, null, null); //---------------Test Result ----------------------- Assert.AreEqual(path, sut.Path); Assert.AreEqual(code, sut.StatusCode); Assert.AreEqual(method, sut.Method); Assert.AreEqual(code.ToString(), sut.Message); Assert.IsNotNull(sut.Headers); }
public void Construct_ShouldCopyParametersToProperties() { //---------------Set up test pack------------------- var path = GetRandomString(); var code = GetRandom <HttpStatusCode>(); var message = GetRandomString(); var method = GetRandomString(); var headers = new Dictionary <string, string>(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var sut = new RequestLogItem(path, code, method, message, headers); //---------------Test Result ----------------------- Assert.AreEqual(path, sut.Path); Assert.AreEqual(code, sut.StatusCode); Assert.AreEqual(method, sut.Method); Assert.AreEqual(message, sut.Message); }
public void Can_serialize_class_instance_to_literal() { // given var entity = new RequestLogItem { Ip = IPAddress.Parse("148.9.20.34") }; var contextProvider = new StaticContextProvider(); var context = JObject.Parse(@" { 'ip': { '@id': 'http://rdfs.org/sioc/ns#ip_address' } }"); contextProvider.SetContext(typeof(RequestLogItem), context); // when IEntitySerializer serializer = new EntitySerializer(contextProvider); dynamic jsonLd = serializer.Serialize(entity); // then Assert.Equal("148.9.20.34", (string)jsonLd.ip); }
public void Can_serialize_class_instance_to_literal() { // given var entity = new RequestLogItem { Ip = IPAddress.Parse("148.9.20.34") }; var contextProvider = new StaticContextProvider(); var context = JObject.Parse(@" { 'ip': { '@id': 'http://rdfs.org/sioc/ns#ip_address' } }"); contextProvider.SetContext(typeof(RequestLogItem), context); // when IEntitySerializer serializer = new EntitySerializer(contextProvider); dynamic jsonLd = serializer.Serialize(entity); // then Assert.That((string)jsonLd.ip, Is.EqualTo("148.9.20.34")); }
private static object AsReadableLine(RequestLogItem arg) { return($"{arg.Method.ToUpper()} {arg.Path}"); }
private static object PrettyPrintRequestLog(RequestLogItem arg) { return($"{arg.Method} {arg.Path}"); }