public void LoggerTests()
        {
            var logger = _provider.GetLogger("XUnit");

            // No Formatting Function
            Assert.True(logger(LogLevel.Debug, null, null, new object[] { "Message" }));
            _log.Assert(null, null, null, null);

            // Trace Log Entry
            Assert.True(logger(LogLevel.Trace, () => "Test {0}", null, new object[] { "Message" }));
            _log.Assert(Microsoft.Extensions.Logging.LogLevel.Trace, 0, null, "XUnit Test Message");

            // Debug Log Entry
            Assert.True(logger(LogLevel.Debug, () => "Test {0}", null, new object[] { "Message" }));
            _log.Assert(Microsoft.Extensions.Logging.LogLevel.Debug, 0, null, "XUnit Test Message");

            // Info Log Entry
            Assert.True(logger(LogLevel.Info, () => "Test {0}", null, new object[] { "Message" }));
            _log.Assert(Microsoft.Extensions.Logging.LogLevel.Information, 0, null, "XUnit Test Message");

            // Warn Log Entry
            Assert.True(logger(LogLevel.Warn, () => "Test {0}", null, new object[] { "Message" }));
            _log.Assert(Microsoft.Extensions.Logging.LogLevel.Warning, 0, null, "XUnit Test Message");

            // Error Log Entry
            Assert.True(logger(LogLevel.Error, () => "Test {0}", null, new object[] { "Message" }));
            _log.Assert(Microsoft.Extensions.Logging.LogLevel.Error, 0, null, "XUnit Test Message");

            // Fatal Log Entry
            Assert.True(logger(LogLevel.Fatal, () => "Test {0}", null, new object[] { "Message" }));
            _log.Assert(Microsoft.Extensions.Logging.LogLevel.Critical, 0, null, "XUnit Test Message");

            // Exception
            var e = new Exception("Something Bad");

            Assert.True(logger(LogLevel.Fatal, () => "Test {0}", e, new object[] { "Message" }));
            _log.Assert(Microsoft.Extensions.Logging.LogLevel.Critical, 0, null, $"XUnit Test Message -> {e}");

            // Invalid LogLevel
            Assert.Throws <ArgumentOutOfRangeException>(() => logger((LogLevel)6, () => "Test {0}", e, new object[] { "Message" }));
        }