public void AddLogProviderMethodSadPath() { ILoggerBuilder builder = null; Action act = () => builder.AddLogProvider <TestLogProvider>(); act.Should().ThrowExactly <ArgumentNullException>().WithMessage("*builder*"); }
/// <summary> /// Adds an <see cref="ILogProvider"/> of type <typeparamref name="TLogProvider"/> to the logger. /// </summary> /// <typeparam name="TLogProvider">The type of <see cref="ILogProvider"/> to add to the logger.</typeparam> /// <param name="builder">The <see cref="ILoggerBuilder"/>.</param> /// <param name="parameters"> /// Constructor arguments for type <typeparamref name="TLogProvider"/> that are not provided by the /// <see cref="IServiceProvider"/>. /// </param> /// <returns>The same <see cref="ILoggerBuilder"/></returns> public static ILoggerBuilder AddLogProvider <TLogProvider>(this ILoggerBuilder builder, params object[] parameters) where TLogProvider : ILogProvider { if (builder is null) { throw new ArgumentNullException(nameof(builder)); } return(builder.AddLogProvider(serviceProvider => ActivatorUtilities.CreateInstance <TLogProvider>(serviceProvider, parameters))); }
/// <summary> /// Adds a <see cref="DebugLogProvider"/> to the logger. /// </summary> /// <param name="builder">The <see cref="ILoggerBuilder"/>.</param> /// <param name="configureOptions"> /// A delegate to configure the <see cref="DebugLogProviderOptions"/> object that is used to /// configure the log provider. /// </param> /// <returns>The same <see cref="ILoggerBuilder"/>.</returns> public static ILoggerBuilder AddDebugLogProvider(this ILoggerBuilder builder, Action <DebugLogProviderOptions> configureOptions = null) { if (builder is null) { throw new ArgumentNullException(nameof(builder)); } return(builder.AddLogProvider(serviceProvider => { var optionsLoggerName = builder.LoggerName == Logger.DefaultName ? Options.DefaultName : builder.LoggerName; var optionsMonitor = serviceProvider.GetService <IOptionsMonitor <DebugLogProviderOptions> >(); var options = optionsMonitor?.Get(optionsLoggerName) ?? new DebugLogProviderOptions(); configureOptions?.Invoke(options); var formatter = options.FormatterRegistration?.Invoke(serviceProvider) ?? new TemplateLogFormatter(DebugLogProvider.DefaultTemplate); return new DebugLogProvider(formatter, options.Level, options.Timeout); })); }