| File: EventLoggerFactoryExtensions.cs | Web Access |
| Project: src\runtime\src\libraries\Microsoft.Extensions.Logging.EventLog\src\Microsoft.Extensions.Logging.EventLog.csproj (Microsoft.Extensions.Logging.EventLog) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.ComponentModel; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging.Configuration; using Microsoft.Extensions.Logging.EventLog; using Microsoft.Extensions.Options; namespace Microsoft.Extensions.Logging { /// <summary> /// Extension methods for the <see cref="ILoggerFactory"/> class. /// </summary> public static class EventLoggerFactoryExtensions { /// <summary> /// Adds an event logger. Use <paramref name="settings"/> to enable logging for specific log levels. /// </summary> /// <param name="factory">The extension method argument.</param> /// <param name="settings">The <see cref="EventLogSettings"/>.</param> [EditorBrowsable(EditorBrowsableState.Never)] [Obsolete("This method is retained only for compatibility. The recommended alternative is AddEventLog(this ILoggingBuilder builder).", error: true)] public static ILoggerFactory AddEventLog(this ILoggerFactory factory, EventLog.EventLogSettings settings) { ArgumentNullException.ThrowIfNull(factory); ArgumentNullException.ThrowIfNull(settings); factory.AddProvider(new EventLogLoggerProvider(settings)); return factory; } /// <summary> /// Adds an event logger that is enabled for <see cref="LogLevel"/>s of minLevel or higher. /// </summary> /// <param name="factory">The extension method argument.</param> /// <param name="minLevel">The minimum <see cref="LogLevel"/> to be logged.</param> [EditorBrowsable(EditorBrowsableState.Never)] [Obsolete("This method is retained only for compatibility. The recommended alternative is AddEventLog(this ILoggingBuilder builder).", error: true)] public static ILoggerFactory AddEventLog(this ILoggerFactory factory, LogLevel minLevel) => AddEventLog(factory, new EventLogSettings() { Filter = (_, logLevel) => logLevel >= minLevel }); /// <summary> /// Adds an event logger that is enabled for <see cref="LogLevel"/>.Information or higher. /// </summary> /// <param name="factory">The extension method argument.</param> [EditorBrowsable(EditorBrowsableState.Never)] [Obsolete("This method is retained only for compatibility. The recommended alternative is AddEventLog(this ILoggingBuilder builder).", error: true)] public static ILoggerFactory AddEventLog(this ILoggerFactory factory) => AddEventLog(factory, LogLevel.Information); /// <summary> /// Adds an event logger named 'EventLog' to the factory. /// </summary> /// <param name="builder">The extension method argument.</param> /// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns> public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder) { ArgumentNullException.ThrowIfNull(builder); builder.AddConfiguration(); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ILoggerProvider, EventLogLoggerProvider>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<IConfigureOptions<EventLogSettings>, EventLogConfigureOptions>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<IOptionsChangeTokenSource<EventLogSettings>, LoggerProviderOptionsChangeTokenSource<EventLogSettings, EventLogLoggerProvider>>()); return builder; } /// <summary> /// Adds an event logger. Use <paramref name="settings"/> to enable logging for specific log levels. /// </summary> /// <param name="builder">The extension method argument.</param> /// <param name="settings">The <see cref="EventLogSettings"/>.</param> /// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns> public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder, EventLogSettings settings) { ArgumentNullException.ThrowIfNull(builder); ArgumentNullException.ThrowIfNull(settings); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ILoggerProvider>(new EventLogLoggerProvider(settings))); return builder; } /// <summary> /// Adds an event logger. Use <paramref name="configure"/> to enable logging for specific log levels. /// </summary> /// <param name="builder">The extension method argument.</param> /// <param name="configure">A delegate to configure the <see cref="EventLogSettings"/>.</param> /// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns> public static ILoggingBuilder AddEventLog(this ILoggingBuilder builder, Action<EventLogSettings> configure) { ArgumentNullException.ThrowIfNull(configure); builder.AddEventLog(); builder.Services.Configure(configure); return builder; } } }