diff --git a/src/Microsoft.AspNet.Routing/Logging/LogFormatter.cs b/src/Microsoft.AspNet.Routing/Logging/LogFormatter.cs
deleted file mode 100644
index 960ef5d6d2..0000000000
--- a/src/Microsoft.AspNet.Routing/Logging/LogFormatter.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-
-namespace Microsoft.AspNet.Routing.Logging.Internal
-{
- public static class LogFormatter
- {
- ///
- /// A formatter for use with .
- ///
- public static string Formatter(object o, Exception e)
- {
- if (o != null && e != null)
- {
- return o + Environment.NewLine + e;
- }
-
- if (o != null)
- {
- return o.ToString();
- }
-
- if (e != null)
- {
- return e.ToString();
- }
-
- return "";
- }
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Routing/Logging/LoggerExtensions.cs b/src/Microsoft.AspNet.Routing/Logging/LoggerExtensions.cs
deleted file mode 100644
index 88ba7efddc..0000000000
--- a/src/Microsoft.AspNet.Routing/Logging/LoggerExtensions.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-using Microsoft.Extensions.Logging;
-
-namespace Microsoft.AspNet.Routing.Logging.Internal
-{
- public static class LoggerExtensions
- {
- public static void WriteValues(this ILogger logger, object values)
- {
- if (logger == null)
- {
- throw new ArgumentNullException(nameof(logger));
- }
-
- logger.Log(
- logLevel: LogLevel.Debug,
- eventId: 0,
- state: values,
- exception: null,
- formatter: LogFormatter.Formatter);
- }
- }
-}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Routing/Logging/RouteConstraintMatcherExtensions.cs b/src/Microsoft.AspNet.Routing/Logging/RouteConstraintMatcherExtensions.cs
new file mode 100644
index 0000000000..05fdb512f3
--- /dev/null
+++ b/src/Microsoft.AspNet.Routing/Logging/RouteConstraintMatcherExtensions.cs
@@ -0,0 +1,31 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System;
+using Microsoft.Extensions.Logging;
+
+namespace Microsoft.AspNet.Routing.Logging
+{
+ internal static class RouteConstraintMatcherExtensions
+ {
+ private static readonly Action _routeValueDoesNotMatchConstraint;
+
+ static RouteConstraintMatcherExtensions()
+ {
+ _routeValueDoesNotMatchConstraint = LoggerMessage.Define