diff --git a/Directory.Packages.props b/Directory.Packages.props
index 287672df..8dd25d3d 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -8,6 +8,7 @@
+
diff --git a/src/Logging.XUnit.v3/MartinCostello.Logging.XUnit.v3.csproj b/src/Logging.XUnit.v3/MartinCostello.Logging.XUnit.v3.csproj
index 0529c3d7..b54530ac 100644
--- a/src/Logging.XUnit.v3/MartinCostello.Logging.XUnit.v3.csproj
+++ b/src/Logging.XUnit.v3/MartinCostello.Logging.XUnit.v3.csproj
@@ -16,6 +16,7 @@
+
diff --git a/src/Logging.XUnit.v3/PublicAPI/PublicAPI.Shipped.txt b/src/Logging.XUnit.v3/PublicAPI/PublicAPI.Shipped.txt
new file mode 100644
index 00000000..28326740
--- /dev/null
+++ b/src/Logging.XUnit.v3/PublicAPI/PublicAPI.Shipped.txt
@@ -0,0 +1,70 @@
+#nullable enable
+MartinCostello.Logging.XUnit.IMessageSinkAccessor
+MartinCostello.Logging.XUnit.IMessageSinkAccessor.MessageSink.get -> Xunit.Sdk.IMessageSink?
+MartinCostello.Logging.XUnit.IMessageSinkAccessor.MessageSink.set -> void
+MartinCostello.Logging.XUnit.ITestOutputHelperAccessor
+MartinCostello.Logging.XUnit.ITestOutputHelperAccessor.OutputHelper.get -> Xunit.ITestOutputHelper?
+MartinCostello.Logging.XUnit.ITestOutputHelperAccessor.OutputHelper.set -> void
+MartinCostello.Logging.XUnit.XUnitLogger
+MartinCostello.Logging.XUnit.XUnitLogger.BeginScope(TState state) -> System.IDisposable?
+MartinCostello.Logging.XUnit.XUnitLogger.Filter.get -> System.Func!
+MartinCostello.Logging.XUnit.XUnitLogger.Filter.set -> void
+MartinCostello.Logging.XUnit.XUnitLogger.IncludeScopes.get -> bool
+MartinCostello.Logging.XUnit.XUnitLogger.IncludeScopes.set -> void
+MartinCostello.Logging.XUnit.XUnitLogger.IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel) -> bool
+MartinCostello.Logging.XUnit.XUnitLogger.Log(Microsoft.Extensions.Logging.LogLevel logLevel, Microsoft.Extensions.Logging.EventId eventId, TState state, System.Exception? exception, System.Func! formatter) -> void
+MartinCostello.Logging.XUnit.XUnitLogger.MessageSinkMessageFactory.get -> System.Func!
+MartinCostello.Logging.XUnit.XUnitLogger.MessageSinkMessageFactory.set -> void
+MartinCostello.Logging.XUnit.XUnitLogger.Name.get -> string!
+MartinCostello.Logging.XUnit.XUnitLogger.XUnitLogger(string! name, MartinCostello.Logging.XUnit.IMessageSinkAccessor! accessor, MartinCostello.Logging.XUnit.XUnitLoggerOptions? options) -> void
+MartinCostello.Logging.XUnit.XUnitLogger.XUnitLogger(string! name, MartinCostello.Logging.XUnit.ITestOutputHelperAccessor! accessor, MartinCostello.Logging.XUnit.XUnitLoggerOptions? options) -> void
+MartinCostello.Logging.XUnit.XUnitLogger.XUnitLogger(string! name, Xunit.ITestOutputHelper! outputHelper, MartinCostello.Logging.XUnit.XUnitLoggerOptions? options) -> void
+MartinCostello.Logging.XUnit.XUnitLogger.XUnitLogger(string! name, Xunit.Sdk.IMessageSink! messageSink, MartinCostello.Logging.XUnit.XUnitLoggerOptions? options) -> void
+MartinCostello.Logging.XUnit.XUnitLoggerOptions
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.Filter.get -> System.Func!
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.Filter.set -> void
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.IncludeScopes.get -> bool
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.IncludeScopes.set -> void
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.MessageSinkMessageFactory.get -> System.Func!
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.MessageSinkMessageFactory.set -> void
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.TimestampFormat.get -> string?
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.TimestampFormat.set -> void
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.XUnitLoggerOptions() -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.Dispose() -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.XUnitLoggerProvider(MartinCostello.Logging.XUnit.IMessageSinkAccessor! accessor, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.XUnitLoggerProvider(MartinCostello.Logging.XUnit.ITestOutputHelperAccessor! accessor, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.XUnitLoggerProvider(Xunit.ITestOutputHelper! outputHelper, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.XUnitLoggerProvider(Xunit.Sdk.IMessageSink! messageSink, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.~XUnitLoggerProvider() -> void
+Microsoft.Extensions.Logging.XUnitLoggerExtensions
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.ITestOutputHelper! outputHelper) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.ITestOutputHelper! outputHelper, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.ITestOutputHelper! outputHelper, Microsoft.Extensions.Logging.LogLevel minLevel) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.ITestOutputHelper! outputHelper, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.ITestOutputHelper! outputHelper, System.Func! configure) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.ITestOutputHelper! outputHelper, System.Func! filter) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Sdk.IMessageSink! messageSink) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Sdk.IMessageSink! messageSink, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Sdk.IMessageSink! messageSink, Microsoft.Extensions.Logging.LogLevel minLevel) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Sdk.IMessageSink! messageSink, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Sdk.IMessageSink! messageSink, System.Func! configure) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Sdk.IMessageSink! messageSink, System.Func! filter) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, MartinCostello.Logging.XUnit.IMessageSinkAccessor! accessor) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, MartinCostello.Logging.XUnit.IMessageSinkAccessor! accessor, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, MartinCostello.Logging.XUnit.ITestOutputHelperAccessor! accessor) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, MartinCostello.Logging.XUnit.ITestOutputHelperAccessor! accessor, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, Xunit.ITestOutputHelper! outputHelper) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, Xunit.ITestOutputHelper! outputHelper, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, Xunit.Sdk.IMessageSink! messageSink) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, Xunit.Sdk.IMessageSink! messageSink, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Xunit.IMessageSinkExtensions.ToLogger(this Xunit.Sdk.IMessageSink! messageSink) -> Microsoft.Extensions.Logging.ILogger!
+static Xunit.IMessageSinkExtensions.ToLoggerFactory(this Xunit.Sdk.IMessageSink! messageSink) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Xunit.ITestOutputHelperExtensions.ToLogger(this Xunit.ITestOutputHelper! outputHelper) -> Microsoft.Extensions.Logging.ILogger!
+static Xunit.ITestOutputHelperExtensions.ToLoggerFactory(this Xunit.ITestOutputHelper! outputHelper) -> Microsoft.Extensions.Logging.ILoggerFactory!
+virtual MartinCostello.Logging.XUnit.XUnitLogger.WriteMessage(Microsoft.Extensions.Logging.LogLevel logLevel, int eventId, string? message, System.Exception? exception) -> void
+virtual MartinCostello.Logging.XUnit.XUnitLoggerProvider.CreateLogger(string! categoryName) -> Microsoft.Extensions.Logging.ILogger!
+virtual MartinCostello.Logging.XUnit.XUnitLoggerProvider.Dispose(bool disposing) -> void
+Xunit.IMessageSinkExtensions
+Xunit.ITestOutputHelperExtensions
diff --git a/src/Logging.XUnit.v3/PublicAPI/PublicAPI.Unshipped.txt b/src/Logging.XUnit.v3/PublicAPI/PublicAPI.Unshipped.txt
new file mode 100644
index 00000000..7dc5c581
--- /dev/null
+++ b/src/Logging.XUnit.v3/PublicAPI/PublicAPI.Unshipped.txt
@@ -0,0 +1 @@
+#nullable enable
diff --git a/src/Logging.XUnit/MartinCostello.Logging.XUnit.csproj b/src/Logging.XUnit/MartinCostello.Logging.XUnit.csproj
index a03cdac4..0c6e27ab 100644
--- a/src/Logging.XUnit/MartinCostello.Logging.XUnit.csproj
+++ b/src/Logging.XUnit/MartinCostello.Logging.XUnit.csproj
@@ -15,6 +15,7 @@
+
diff --git a/src/Logging.XUnit/PublicAPI/PublicAPI.Shipped.txt b/src/Logging.XUnit/PublicAPI/PublicAPI.Shipped.txt
new file mode 100644
index 00000000..6c9612c1
--- /dev/null
+++ b/src/Logging.XUnit/PublicAPI/PublicAPI.Shipped.txt
@@ -0,0 +1,70 @@
+#nullable enable
+MartinCostello.Logging.XUnit.IMessageSinkAccessor
+MartinCostello.Logging.XUnit.IMessageSinkAccessor.MessageSink.get -> Xunit.Abstractions.IMessageSink?
+MartinCostello.Logging.XUnit.IMessageSinkAccessor.MessageSink.set -> void
+MartinCostello.Logging.XUnit.ITestOutputHelperAccessor
+MartinCostello.Logging.XUnit.ITestOutputHelperAccessor.OutputHelper.get -> Xunit.Abstractions.ITestOutputHelper?
+MartinCostello.Logging.XUnit.ITestOutputHelperAccessor.OutputHelper.set -> void
+MartinCostello.Logging.XUnit.XUnitLogger
+MartinCostello.Logging.XUnit.XUnitLogger.BeginScope(TState state) -> System.IDisposable?
+MartinCostello.Logging.XUnit.XUnitLogger.Filter.get -> System.Func!
+MartinCostello.Logging.XUnit.XUnitLogger.Filter.set -> void
+MartinCostello.Logging.XUnit.XUnitLogger.IncludeScopes.get -> bool
+MartinCostello.Logging.XUnit.XUnitLogger.IncludeScopes.set -> void
+MartinCostello.Logging.XUnit.XUnitLogger.IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel) -> bool
+MartinCostello.Logging.XUnit.XUnitLogger.Log(Microsoft.Extensions.Logging.LogLevel logLevel, Microsoft.Extensions.Logging.EventId eventId, TState state, System.Exception? exception, System.Func! formatter) -> void
+MartinCostello.Logging.XUnit.XUnitLogger.MessageSinkMessageFactory.get -> System.Func!
+MartinCostello.Logging.XUnit.XUnitLogger.MessageSinkMessageFactory.set -> void
+MartinCostello.Logging.XUnit.XUnitLogger.Name.get -> string!
+MartinCostello.Logging.XUnit.XUnitLogger.XUnitLogger(string! name, MartinCostello.Logging.XUnit.IMessageSinkAccessor! accessor, MartinCostello.Logging.XUnit.XUnitLoggerOptions? options) -> void
+MartinCostello.Logging.XUnit.XUnitLogger.XUnitLogger(string! name, MartinCostello.Logging.XUnit.ITestOutputHelperAccessor! accessor, MartinCostello.Logging.XUnit.XUnitLoggerOptions? options) -> void
+MartinCostello.Logging.XUnit.XUnitLogger.XUnitLogger(string! name, Xunit.Abstractions.IMessageSink! messageSink, MartinCostello.Logging.XUnit.XUnitLoggerOptions? options) -> void
+MartinCostello.Logging.XUnit.XUnitLogger.XUnitLogger(string! name, Xunit.Abstractions.ITestOutputHelper! outputHelper, MartinCostello.Logging.XUnit.XUnitLoggerOptions? options) -> void
+MartinCostello.Logging.XUnit.XUnitLoggerOptions
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.Filter.get -> System.Func!
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.Filter.set -> void
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.IncludeScopes.get -> bool
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.IncludeScopes.set -> void
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.MessageSinkMessageFactory.get -> System.Func!
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.MessageSinkMessageFactory.set -> void
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.TimestampFormat.get -> string?
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.TimestampFormat.set -> void
+MartinCostello.Logging.XUnit.XUnitLoggerOptions.XUnitLoggerOptions() -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.Dispose() -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.XUnitLoggerProvider(MartinCostello.Logging.XUnit.IMessageSinkAccessor! accessor, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.XUnitLoggerProvider(MartinCostello.Logging.XUnit.ITestOutputHelperAccessor! accessor, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.XUnitLoggerProvider(Xunit.Abstractions.IMessageSink! messageSink, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.XUnitLoggerProvider(Xunit.Abstractions.ITestOutputHelper! outputHelper, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> void
+MartinCostello.Logging.XUnit.XUnitLoggerProvider.~XUnitLoggerProvider() -> void
+Microsoft.Extensions.Logging.XUnitLoggerExtensions
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.IMessageSink! messageSink) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.IMessageSink! messageSink, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.IMessageSink! messageSink, Microsoft.Extensions.Logging.LogLevel minLevel) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.IMessageSink! messageSink, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.IMessageSink! messageSink, System.Func! configure) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.IMessageSink! messageSink, System.Func! filter) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.ITestOutputHelper! outputHelper) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.ITestOutputHelper! outputHelper, MartinCostello.Logging.XUnit.XUnitLoggerOptions! options) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.ITestOutputHelper! outputHelper, Microsoft.Extensions.Logging.LogLevel minLevel) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.ITestOutputHelper! outputHelper, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.ITestOutputHelper! outputHelper, System.Func! configure) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggerFactory! factory, Xunit.Abstractions.ITestOutputHelper! outputHelper, System.Func! filter) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, MartinCostello.Logging.XUnit.IMessageSinkAccessor! accessor) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, MartinCostello.Logging.XUnit.IMessageSinkAccessor! accessor, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, MartinCostello.Logging.XUnit.ITestOutputHelperAccessor! accessor) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, MartinCostello.Logging.XUnit.ITestOutputHelperAccessor! accessor, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, Xunit.Abstractions.IMessageSink! messageSink) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, Xunit.Abstractions.IMessageSink! messageSink, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, Xunit.Abstractions.ITestOutputHelper! outputHelper) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Microsoft.Extensions.Logging.XUnitLoggerExtensions.AddXUnit(this Microsoft.Extensions.Logging.ILoggingBuilder! builder, Xunit.Abstractions.ITestOutputHelper! outputHelper, System.Action! configure) -> Microsoft.Extensions.Logging.ILoggingBuilder!
+static Xunit.Abstractions.IMessageSinkExtensions.ToLogger(this Xunit.Abstractions.IMessageSink! messageSink) -> Microsoft.Extensions.Logging.ILogger!
+static Xunit.Abstractions.IMessageSinkExtensions.ToLoggerFactory(this Xunit.Abstractions.IMessageSink! messageSink) -> Microsoft.Extensions.Logging.ILoggerFactory!
+static Xunit.Abstractions.ITestOutputHelperExtensions.ToLogger(this Xunit.Abstractions.ITestOutputHelper! outputHelper) -> Microsoft.Extensions.Logging.ILogger!
+static Xunit.Abstractions.ITestOutputHelperExtensions.ToLoggerFactory(this Xunit.Abstractions.ITestOutputHelper! outputHelper) -> Microsoft.Extensions.Logging.ILoggerFactory!
+virtual MartinCostello.Logging.XUnit.XUnitLogger.WriteMessage(Microsoft.Extensions.Logging.LogLevel logLevel, int eventId, string? message, System.Exception? exception) -> void
+virtual MartinCostello.Logging.XUnit.XUnitLoggerProvider.CreateLogger(string! categoryName) -> Microsoft.Extensions.Logging.ILogger!
+virtual MartinCostello.Logging.XUnit.XUnitLoggerProvider.Dispose(bool disposing) -> void
+Xunit.Abstractions.IMessageSinkExtensions
+Xunit.Abstractions.ITestOutputHelperExtensions
diff --git a/src/Logging.XUnit/PublicAPI/PublicAPI.Unshipped.txt b/src/Logging.XUnit/PublicAPI/PublicAPI.Unshipped.txt
new file mode 100644
index 00000000..7dc5c581
--- /dev/null
+++ b/src/Logging.XUnit/PublicAPI/PublicAPI.Unshipped.txt
@@ -0,0 +1 @@
+#nullable enable