using Microsoft.Extensions.Logging;
using System;
using Xunit.Abstractions;
namespace k8s.Tests.Logging
{
///
/// Logger provider for logging to Xunit test output.
///
internal sealed class TestOutputLoggerProvider
: ILoggerProvider
{
///
/// Initializes a new instance of the class.
/// Create a new .
///
///
/// The output for the current test.
///
///
/// The logger's minimum log level.
///
public TestOutputLoggerProvider(ITestOutputHelper testOutput, LogLevel minLogLevel)
{
if (testOutput == null)
{
throw new ArgumentNullException(nameof(testOutput));
}
TestOutput = testOutput;
MinLogLevel = minLogLevel;
}
///
/// Dispose of resources being used by the logger provider.
///
public void Dispose()
{
}
///
/// The output for the current test.
///
private ITestOutputHelper TestOutput { get; }
///
/// The logger's minimum log level.
///
public LogLevel MinLogLevel { get; }
///
/// Create a new logger.
///
///
/// The logger category name.
///
///
/// The logger, as an .
///
public ILogger CreateLogger(string categoryName) => new TestOutputLogger(TestOutput, categoryName, MinLogLevel);
}
}