Files
LogViewerControl/Resources/3rd Party/Microsoft.Extensions.Logging.Log4Net.AspNetCore/Log4NetExtensions.cs
T

100 lines
4.7 KiB
C#
Raw Normal View History

2026-04-04 13:30:13 +02:00
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace Microsoft.Extensions.Logging
{
/// <summary>
/// The log4net extensions class.
/// </summary>
public static class Log4NetExtensions
{
/// <summary>
/// Adds the log4net.
/// </summary>
/// <param name="factory">The factory.</param>
/// <returns>The <see cref="ILoggerFactory"/> with added Log4Net provider</returns>
public static ILoggerFactory AddLog4Net(this ILoggerFactory factory)
=> factory.AddLog4Net(new Log4NetProviderOptions());
/// <summary>
/// Adds the log4net.
/// </summary>
/// <param name="factory">The factory.</param>
/// <param name="log4NetConfigFile">The log4net Config File.</param>
/// <returns>The <see cref="ILoggerFactory"/> after adding the log4net provider.</returns>
public static ILoggerFactory AddLog4Net(this ILoggerFactory factory, string log4NetConfigFile)
=> factory.AddLog4Net(log4NetConfigFile, false);
/// <summary>
/// Adds the log4net logging provider.
/// </summary>
/// <param name="factory">The factory.</param>
/// <param name="log4NetConfigFile">The log4 net configuration file.</param>
/// <param name="watch">if set to <c>true</c> [watch].</param>
/// <returns>The <see cref="ILoggerFactory"/> after adding the log4net provider.</returns>
public static ILoggerFactory AddLog4Net(this ILoggerFactory factory, string log4NetConfigFile, bool watch)
=> factory.AddLog4Net(new Log4NetProviderOptions(log4NetConfigFile, watch));
/// <summary>
/// Adds the log4net logging provider.
/// </summary>
/// <param name="factory">The logger factory.</param>
/// <param name="options">The options for log4net provider.</param>
/// <returns>The <see cref="ILoggerFactory"/> after adding the log4net provider.</returns>
public static ILoggerFactory AddLog4Net(this ILoggerFactory factory, Log4NetProviderOptions options)
{
factory.AddProvider(new Log4NetProvider(options));
return factory;
}
/// <summary>
/// Adds the log4net logging provider.
/// </summary>
/// <param name="builder">The logging builder instance.</param>
/// <returns>The <see ref="ILoggingBuilder" /> passed as parameter with the new provider registered.</returns>
public static ILoggingBuilder AddLog4Net(this ILoggingBuilder builder)
{
var options = new Log4NetProviderOptions();
return builder.AddLog4Net(options);
}
/// <summary>
/// Adds the log4net logging provider.
/// </summary>
/// <param name="builder">The logging builder instance.</param>
/// <param name="log4NetConfigFile">The log4net Config File.</param>
/// <returns>The <see ref="ILoggingBuilder" /> passed as parameter with the new provider registered.</returns>
public static ILoggingBuilder AddLog4Net(this ILoggingBuilder builder, string log4NetConfigFile)
{
var options = new Log4NetProviderOptions(log4NetConfigFile);
return builder.AddLog4Net(options);
}
/// <summary>
/// Adds the log4net logging provider.
/// </summary>
/// <param name="builder">The logging builder instance.</param>
/// <param name="log4NetConfigFile">The log4net Config File.</param>
/// <param name="watch">if set to <c>true</c>, the configuration will be reloaded when the xml configuration file changes.</param>
/// <returns>
/// The <see ref="ILoggingBuilder" /> passed as parameter with the new provider registered.
/// </returns>
public static ILoggingBuilder AddLog4Net(this ILoggingBuilder builder, string log4NetConfigFile, bool watch)
{
var options = new Log4NetProviderOptions(log4NetConfigFile, watch);
return builder.AddLog4Net(options);
}
/// <summary>
/// Adds the log4net logging provider.
/// </summary>
/// <param name="builder">The logging builder instance.</param>
/// <param name="options">The options.</param>
/// <returns>The <see ref="ILoggingBuilder" /> passed as parameter with the new provider registered.</returns>
public static ILoggingBuilder AddLog4Net(this ILoggingBuilder builder, Log4NetProviderOptions options)
{
builder.Services.Replace(ServiceDescriptor.Singleton<ILoggerProvider>(sp => new Log4NetProvider(options, sp)));
return builder;
}
}
}