public async Task NoopWhenLoggingDisabled()
        {
            var options = CreateOptionsAccessor();

            options.CurrentValue.LoggingFields = W3CLoggingFields.None;
            var logger = new TestW3CLogger(options, new HostingEnvironment(), NullLoggerFactory.Instance);

            var middleware = new W3CLoggingMiddleware(
                c =>
            {
                c.Response.StatusCode = 200;
                return(Task.CompletedTask);
            },
                options,
                logger);

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Protocol           = "HTTP/1.0";
            httpContext.Request.Method             = "GET";
            httpContext.Request.Path               = new PathString("/foo");
            httpContext.Request.QueryString        = new QueryString("?foo");
            httpContext.Request.Headers["Referer"] = "bar";

            await middleware.Invoke(httpContext);

            Assert.Empty(logger.Processor.Lines);
        }
        public async Task DefaultDoesNotLogOptionalFields()
        {
            var options = CreateOptionsAccessor();
            var logger  = new TestW3CLogger(options, new HostingEnvironment(), NullLoggerFactory.Instance);

            var middleware = new W3CLoggingMiddleware(
                c =>
            {
                c.Response.StatusCode = 200;
                return(Task.CompletedTask);
            },
                options,
                logger);

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Protocol          = "HTTP/1.0";
            httpContext.Request.Headers["Cookie"] = "Snickerdoodle";
            httpContext.Response.StatusCode       = 200;

            var now = DateTime.Now;
            await middleware.Invoke(httpContext);

            await logger.Processor.WaitForWrites(4).DefaultTimeout();

            var lines = logger.Processor.Lines;

            Assert.Equal("#Version: 1.0", lines[0]);

            Assert.StartsWith("#Start-Date: ", lines[1]);
            var startDate = DateTime.Parse(lines[1].Substring(13), CultureInfo.InvariantCulture);

            // Assert that the log was written in the last 10 seconds
            Assert.True(now.Subtract(startDate).TotalSeconds < 10);

            Assert.Equal("#Fields: date time c-ip s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status time-taken cs-version cs-host cs(User-Agent) cs(Referer)", lines[2]);
            Assert.DoesNotContain(lines[2], "Snickerdoodle");
        }
Пример #3
0
        public async Task TimeTakenIsInMilliseconds()
        {
            var options = CreateOptionsAccessor();

            options.CurrentValue.LoggingFields = W3CLoggingFields.TimeTaken;
            var logger = new TestW3CLogger(options, new HostingEnvironment(), NullLoggerFactory.Instance);

            var middleware = new W3CLoggingMiddleware(
                c =>
            {
                c.Response.StatusCode = 200;
                return(Task.CompletedTask);
            },
                options,
                logger);

            var httpContext = new DefaultHttpContext();

            var now = DateTime.Now;
            await middleware.Invoke(httpContext);

            await logger.Processor.WaitForWrites(4).DefaultTimeout();

            var lines = logger.Processor.Lines;

            Assert.Equal("#Version: 1.0", lines[0]);

            Assert.StartsWith("#Start-Date: ", lines[1]);
            var startDate = DateTime.Parse(lines[1].Substring(13), CultureInfo.InvariantCulture);

            // Assert that the log was written in the last 10 seconds
            Assert.True(now.Subtract(startDate).TotalSeconds < 10);

            Assert.Equal("#Fields: time-taken", lines[2]);
            double num;

            Assert.True(Double.TryParse(lines[3], NumberStyles.Number, CultureInfo.InvariantCulture, out num));
        }