Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
    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);
    }
Пример #5
0
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}");
 }