XUnitLogger Class

Provides an implementation of ILogger that writes logs to xUnit.net's ITestOutputHelper.

public class XUnitLogger : ILogger

Example

public sealed class MyTests(ITestOutputHelper testOutputHelper)
{
    [Fact]
    public void MyTest()
    {
        var logger = XUnitLogger.CreateLogger(testOutputHelper);
        logger.LogInformation("This message will appear in the test output");
    }
}
Implements

Constructors

NameDescription
XUnitLogger(ITestOutputHelper?, IExternalScopeProvider, string?, XUnitLoggerOptions?)Initializes a new instance of the XUnitLogger class.
XUnitLogger(ITestOutputHelper?, LoggerExternalScopeProvider, string?)Initializes a new instance of the XUnitLogger class.
XUnitLogger(ITestOutputHelper?, LoggerExternalScopeProvider, string?, XUnitLoggerOptions?)Initializes a new instance of the XUnitLogger class.
XUnitLogger(ITestOutputHelper?, LoggerExternalScopeProvider, string?, bool)Initializes a new instance of the XUnitLogger class.

XUnitLogger overloads

XUnitLogger(ITestOutputHelper?, IExternalScopeProvider, string?, XUnitLoggerOptions?)

XUnitLogger.cs

Initializes a new instance of the XUnitLogger class.

public XUnitLogger(ITestOutputHelper? testOutputHelper, IExternalScopeProvider scopeProvider, string? categoryName, XUnitLoggerOptions? options)
Parameters
testOutputHelper ITestOutputHelper?
The xUnit.net test output helper.
scopeProvider IExternalScopeProvider
The scope provider.
categoryName string?
The category name for messages produced by the logger.
options XUnitLoggerOptions?
The logger options.

XUnitLogger(ITestOutputHelper?, LoggerExternalScopeProvider, string?)

XUnitLogger.cs

Initializes a new instance of the XUnitLogger class.

public XUnitLogger(ITestOutputHelper? testOutputHelper, LoggerExternalScopeProvider scopeProvider, string? categoryName)
Parameters
testOutputHelper ITestOutputHelper?
The xUnit.net test output helper.
scopeProvider LoggerExternalScopeProvider
The scope provider.
categoryName string?
The category name for messages produced by the logger.
Remarks

Scopes are not appended to the messages. Use the overload taking XUnitLoggerOptions to change it.

XUnitLogger(ITestOutputHelper?, LoggerExternalScopeProvider, string?, XUnitLoggerOptions?)

XUnitLogger.cs

Initializes a new instance of the XUnitLogger class.

public XUnitLogger(ITestOutputHelper? testOutputHelper, LoggerExternalScopeProvider scopeProvider, string? categoryName, XUnitLoggerOptions? options)
Parameters
testOutputHelper ITestOutputHelper?
The xUnit.net test output helper.
scopeProvider LoggerExternalScopeProvider
The scope provider.
categoryName string?
The category name for messages produced by the logger.
options XUnitLoggerOptions?
The logger options.

XUnitLogger(ITestOutputHelper?, LoggerExternalScopeProvider, string?, bool)

XUnitLogger.cs

Initializes a new instance of the XUnitLogger class.

public XUnitLogger(ITestOutputHelper? testOutputHelper, LoggerExternalScopeProvider scopeProvider, string? categoryName, bool appendScope)
Parameters
testOutputHelper ITestOutputHelper?
The xUnit.net test output helper.
scopeProvider LoggerExternalScopeProvider
The scope provider.
categoryName string?
The category name for messages produced by the logger.
appendScope bool
Whether to include scopes when logging.

Methods

NameDescription
BeginScope<TState>(TState)Begins a logical operation scope.
CreateLogger()Creates a new logger instance without a test output helper.
CreateLogger(ITestOutputHelper?)Creates a new logger instance with the specified test output helper.
CreateLogger(ITestOutputHelper?, XUnitLoggerOptions?)Creates a new logger instance with the specified test output helper.
CreateLogger<T>()Creates a new typed logger instance without a test output helper.
CreateLogger<T>(ITestOutputHelper?)Creates a new typed logger instance with the specified test output helper.
CreateLogger<T>(ITestOutputHelper?, XUnitLoggerOptions?)Creates a new typed logger instance with the specified test output helper.
IsEnabled(LogLevel)Checks if the given logLevel is enabled.
Log<TState>(LogLevel, EventId, TState, Exception?, Func<TState, Exception?, string>)Writes a log entry.

BeginScope<TState>(TState)

XUnitLogger.cs

Begins a logical operation scope.

public IDisposable? BeginScope<TState>(TState state) where TState : notnull

Type parameters

TState
The type of the state to begin scope for.

Parameters

state TState
The identifier for the scope.

Returns

IDisposable? An IDisposable that ends the logical operation scope on dispose.

CreateLogger overloads

CreateLogger()

XUnitLogger.cs

Creates a new logger instance without a test output helper.

public static ILogger CreateLogger()
Returns

ILogger A new ILogger instance.

CreateLogger(ITestOutputHelper?)

XUnitLogger.cs

Creates a new logger instance with the specified test output helper.

public static ILogger CreateLogger(ITestOutputHelper? testOutputHelper)
Parameters
testOutputHelper ITestOutputHelper?
The xUnit.net test output helper.
Returns

ILogger A new ILogger instance.

CreateLogger(ITestOutputHelper?, XUnitLoggerOptions?)

XUnitLogger.cs

Creates a new logger instance with the specified test output helper.

public static ILogger CreateLogger(ITestOutputHelper? testOutputHelper, XUnitLoggerOptions? options)
Parameters
testOutputHelper ITestOutputHelper?
The xUnit.net test output helper.
options XUnitLoggerOptions?
The logger options.
Returns

ILogger A new ILogger instance.

CreateLogger<T>()

XUnitLogger.cs

Creates a new typed logger instance without a test output helper.

public static ILogger<T> CreateLogger<T>()
Type parameters
T
The type whose name is used for the logger category.
Returns

ILogger<T> A new ILogger<TCategoryName> instance.

CreateLogger<T>(ITestOutputHelper?)

XUnitLogger.cs

Creates a new typed logger instance with the specified test output helper.

public static ILogger<T> CreateLogger<T>(ITestOutputHelper? testOutputHelper)
Type parameters
T
The type whose name is used for the logger category.
Parameters
testOutputHelper ITestOutputHelper?
The xUnit.net test output helper.
Returns

ILogger<T> A new ILogger<TCategoryName> instance.

CreateLogger<T>(ITestOutputHelper?, XUnitLoggerOptions?)

XUnitLogger.cs

Creates a new typed logger instance with the specified test output helper.

public static ILogger<T> CreateLogger<T>(ITestOutputHelper? testOutputHelper, XUnitLoggerOptions? options)
Type parameters
T
The type whose name is used for the logger category.
Parameters
testOutputHelper ITestOutputHelper?
The xUnit.net test output helper.
options XUnitLoggerOptions?
The logger options [optional].
Returns

ILogger<T> A new ILogger<TCategoryName> instance.

IsEnabled(LogLevel)

XUnitLogger.cs

Checks if the given logLevel is enabled.

public bool IsEnabled(LogLevel logLevel)

Parameters

logLevel LogLevel
Level to be checked.

Returns

bool true if enabled.

Log<TState>(LogLevel, EventId, TState, Exception?, Func<TState, Exception?, string>)

XUnitLogger.cs

Writes a log entry.

public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)

Type parameters

TState
The type of the object to be written.

Parameters

logLevel LogLevel
Entry will be written on this level.
eventId EventId
Id of the event.
state TState
The entry to be written. Can be also an object.
exception Exception?
The exception related to this entry.
formatter Func<TState, Exception?, string>
Function to create a String message of the state and exception.