/// <summary>
 /// This is the "normal" way to add provider to the list, some DI magic, but in essence it just registers another instance for ILoggerProvider
 /// </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static ILoggingBuilder AddInMemoryDebug(this ILoggingBuilder builder)
 {
     builder.AddConfiguration();
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, InMemoryDebugProvider>());
     LoggerProviderOptions.RegisterProviderOptions <InMemoryDebugOptions, InMemoryDebugProvider>(builder.Services);
     return(builder);
 }
Example #2
0
        /// <summary>
        /// Adds a console logger named 'Console' to the factory.
        /// </summary>
        /// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
        public static ILoggingBuilder AddPdmConsole(this ILoggingBuilder builder)
        {
            builder.AddConfiguration();

            builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, PdmConsoleLoggerProvider>());
            LoggerProviderOptions.RegisterProviderOptions <PdmConsoleLoggerOptions, PdmConsoleLoggerProvider>(builder.Services);
            return(builder);
        }
        /// <param name="fileNameSelector">DateTimeOffset is date of file open time(UTC), int is number sequence.</param>
        /// <param name="timestampPattern">DateTimeOffset is write time of message(UTC). If pattern is different previously then roll new file.</param>
        /// <param name="rollSizeKB">Limit size of single file.</param>
        public static ILoggingBuilder AddZLoggerRollingFile(this ILoggingBuilder builder, Func <DateTimeOffset, int, string> fileNameSelector, Func <DateTimeOffset, DateTimeOffset> timestampPattern, int rollSizeKB)
        {
            builder.AddConfiguration();
            builder.Services.Add(ServiceDescriptor.Singleton <ILoggerProvider, ZLoggerRollingFileLoggerProvider>(x => new ZLoggerRollingFileLoggerProvider(fileNameSelector, timestampPattern, rollSizeKB, x.GetService <IOptionsSnapshot <ZLoggerOptions> >())));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, ZLoggerRollingFileLoggerProvider>(builder.Services);

            return(builder);
        }
        public static ILoggingBuilder AddZLoggerLogProcessor(this ILoggingBuilder builder, IAsyncLogProcessor logProcessor)
        {
            builder.AddConfiguration();
            builder.Services.Add(ServiceDescriptor.Singleton <ILoggerProvider, ZLoggerLogProcessorLoggerProvider>(x => new ZLoggerLogProcessorLoggerProvider(logProcessor)));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, ZLoggerLogProcessorLoggerProvider>(builder.Services);

            return(builder);
        }
        public static ILoggingBuilder AddZLoggerConsole(this ILoggingBuilder builder, bool consoleOutputEncodingToUtf8 = true)
        {
            builder.AddConfiguration();
            builder.Services.Add(ServiceDescriptor.Singleton <ILoggerProvider, ZLoggerConsoleLoggerProvider>(x => new ZLoggerConsoleLoggerProvider(consoleOutputEncodingToUtf8, null, x.GetService <IOptionsSnapshot <ZLoggerOptions> >())));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, ZLoggerConsoleLoggerProvider>(builder.Services);

            return(builder);
        }
Example #6
0
 /// <summary>
 /// Adds a console logger named 'Raven' to the factory.
 /// </summary>
 /// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
 public static ILoggingBuilder AddRaven(this ILoggingBuilder builder)
 {
     builder.AddConfiguration();
     builder.Services.AddHttpContextAccessor();
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, RavenLoggerProvider>());
     LoggerProviderOptions.RegisterProviderOptions <RavenLoggerOptions, RavenLoggerProvider>(builder.Services);
     return(builder);
 }
        public static ILoggingBuilder AddZLoggerFile(this ILoggingBuilder builder, string fileName)
        {
            builder.AddConfiguration();
            builder.Services.Add(ServiceDescriptor.Singleton <ILoggerProvider, ZLoggerFileLoggerProvider>(x => new ZLoggerFileLoggerProvider(fileName, x.GetService <IOptionsSnapshot <ZLoggerOptions> >())));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, ZLoggerFileLoggerProvider>(builder.Services);

            return(builder);
        }
        public static ILoggingBuilder AddSingleLineConsole(this ILoggingBuilder builder)
        {
            builder.AddConfiguration();

            builder.Services.AddSingleton <ILoggerProvider, SingleLineConsoleLoggerProvider>();
            LoggerProviderOptions.RegisterProviderOptions <SingleLineConsoleLoggerOptions, SingleLineConsoleLoggerProvider>(builder.Services);
            return(builder);
        }
Example #9
0
        public static ILoggingBuilder AddZLoggerStream(this ILoggingBuilder builder, Stream stream)
        {
            builder.AddConfiguration();
            builder.Services.Add(ServiceDescriptor.Singleton <ILoggerProvider, ZLoggerStreamLoggerProvider>(x => new ZLoggerStreamLoggerProvider(stream, x.GetService <IOptionsMonitor <ZLoggerOptions> >())));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, ZLoggerStreamLoggerProvider>(builder.Services);

            return(builder);
        }
Example #10
0
        /// <summary>
        /// バックグラウンド ロガーを構成します。
        /// </summary>
        /// <typeparam name="TProvider">構成するロガー プロバイダの型。</typeparam>
        /// <typeparam name="TOptions">ロガー オプションの型。</typeparam>
        /// <param name="builder">ログ構成ビルダー。</param>
        /// <param name="defaultMinLevel">ロガーの既定の最小ログ レベル</param>
        /// <returns><paramref name="builder"/>。</returns>
        /// <exception cref="ArgumentNullException"><paramref name="builder"/> is <c>null</c>.</exception>
        public static ILoggingBuilder AddLogger <TProvider, TOptions>(this ILoggingBuilder builder, LogLevel?defaultMinLevel = null)
            where TProvider : class, ILoggerProvider
            where TOptions : class
        {
            builder.AddLogger <TProvider>(defaultMinLevel);
            LoggerProviderOptions.RegisterProviderOptions <TOptions, TProvider>(builder.Services);

            return(builder);
        }
 private static void AddServices(ILoggingBuilder builder)
 {
     builder.AddConfiguration();
     builder.Services.TryAddSingleton <DatabaseLoggerCollector>();
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, DatabaseLoggerProvider>());
     LoggerProviderOptions.RegisterProviderOptions <DatabaseLoggerOptions, DatabaseLoggerProvider>(
         builder.Services);
     builder.Services.AddHostedService <DatabaseLoggerService>();
 }
Example #12
0
        public static ILoggingBuilder AddZLoggerUnityDebug(this ILoggingBuilder builder)
        {
            builder.AddConfiguration();

            builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, ZLoggerUnityLoggerProvider>(x => new ZLoggerUnityLoggerProvider(x.GetService <IOptions <ZLoggerOptions> >())));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, ZLoggerUnityLoggerProvider>(builder.Services);

            return(builder);
        }
    /// <summary>
    /// Adds a TextBlock logger named 'TextBlock' to the factory.
    /// </summary>
    /// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
    /// <returns>The <see cref="ILoggingBuilder"/> so that additional calls can be chained.</returns>
    public static ILoggingBuilder AddTextBlock(this ILoggingBuilder builder)
    {
        builder.AddConfiguration();
        _ = builder.AddTextBlockFormatter <SimpleTextBlockFormatter, SimpleTextBlockFormatterOptions>();
        _ = builder.Services.AddSingleton <ITextblockProvider, TextblockProvider>();
        builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, TextBlockLoggerProvider>());
        LoggerProviderOptions.RegisterProviderOptions <TextBlockLoggerOptions, TextBlockLoggerProvider>(builder.Services);

        return(builder);
    }
        public static ILoggingBuilder AddCappedLog(this ILoggingBuilder builder, Action <CappedLogLoggerOptions> configure = null)
        {
            builder.AddConfiguration();
            builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, CappedLogProvider>());
            LoggerProviderOptions.RegisterProviderOptions <CappedLogLoggerOptions, CappedLogProvider>(builder.Services);

            builder.Services.Configure <CappedLogLoggerOptions>(opt => ConfigureCappedLog(opt, configure));

            return(builder);
        }
Example #15
0
 public static ILoggingBuilder AddIotHubLogger(this ILoggingBuilder builder, Action <LoRaLoggerConfiguration> configure)
 {
     if (builder is null)
     {
         throw new ArgumentNullException(nameof(builder));
     }
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, IotHubLoggerProvider>());
     LoggerProviderOptions.RegisterProviderOptions <LoRaLoggerConfiguration, IotHubLoggerProvider>(builder.Services);
     _ = builder.Services.Configure(configure);
     return(builder);
 }
Example #16
0
        private static void ConfigureServices(
            HostBuilderContext context,
            IServiceCollection services)
        {
            // Required to convince the EventLogLoggerProvider to honor
            // configuration for more than just log level.
            // https://github.com/dotnet/extensions/issues/2519
            LoggerProviderOptions.RegisterProviderOptions
            <EventLogSettings, EventLogLoggerProvider>(services);

            services.AddRSMassTransit(context.Configuration);
        }
Example #17
0
        public static ILoggingBuilder AddSimplestFile(this ILoggingBuilder loggingBuilder, ILogger logger)
        {
            logger.LogDebug($@"Adding {nameof(SimplestFileLogger)}...");

            loggingBuilder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, SimplestFileLoggerProvider>());

            LoggerProviderOptions.RegisterProviderOptions <SimplestFileLoggerOptions, SimplestFileLoggerProvider>(loggingBuilder.Services);

            logger.LogInformation($@"Added {nameof(SimplestFileLogger)}.");

            return(loggingBuilder);
        }
        /// <summary>
        /// Adds a file logger named 'File' to the factory.
        /// </summary>
        /// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
        public static ILoggingBuilder AddFile(this ILoggingBuilder builder)
        {
            builder.AddConfiguration();

            builder.AddFileFormatter<JsonFileFormatter, JsonFileFormatterOptions>();
            builder.AddFileFormatter<SimpleFileFormatter, SimpleFileFormatterOptions>();

            builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ILoggerProvider, FileLoggerProvider>());
            LoggerProviderOptions.RegisterProviderOptions<FileLoggerOptions, FileLoggerProvider>(builder.Services);

            return builder;
        }
        public static ILoggingBuilder AddZLoggerConsole(this ILoggingBuilder builder, bool consoleOutputEncodingToUtf8 = true, bool configureEnableAnsiEscapeCode = false)
        {
            if (configureEnableAnsiEscapeCode)
            {
                EnableAnsiEscapeCode();
            }

            builder.AddConfiguration();
            builder.Services.Add(ServiceDescriptor.Singleton <ILoggerProvider, ZLoggerConsoleLoggerProvider>(x => new ZLoggerConsoleLoggerProvider(consoleOutputEncodingToUtf8, null, x.GetService <IOptionsMonitor <ZLoggerOptions> >())));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, ZLoggerConsoleLoggerProvider>(builder.Services);

            return(builder);
        }
        public static ILoggingBuilder AddNotepad(this ILoggingBuilder builder)
        {
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddConfiguration();

            builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, NotepadLoggerProvider>());
            LoggerProviderOptions.RegisterProviderOptions <NotepadLoggerOptions, NotepadLoggerProvider>(builder.Services);
            return(builder);
        }
Example #21
0
    public static ILoggingBuilder AddGitFile(this ILoggingBuilder builder,
                                             Action <GitFileLoggerOptions> configure = null)
    {
        builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, GitFileLoggerProvider>());
        LoggerProviderOptions
        .RegisterProviderOptions <GitFileLoggerOptions, GitFileLoggerProvider>(builder.Services);
        if (configure != null)
        {
            builder.Services.Configure(configure);
        }

        return(builder);
    }
Example #22
0
        static public ILoggingBuilder AddChannelLogger(
            this ILoggingBuilder builder)
        {
            builder.AddConfiguration();

            builder.Services.TryAddEnumerable(
                ServiceDescriptor.Singleton <ILoggerProvider, ChannelLoggerProvider>());

            LoggerProviderOptions.RegisterProviderOptions
            <ChannelLoggerConfiguration, ChannelLoggerProvider>(builder.Services);

            return(builder);
        }
        public static ILoggingBuilder AddHttp(this ILoggingBuilder builder)
        {
            builder.Services.TryAddSingleton <HttpLoggerQueue>();
            builder.Services.AddHostedService <HttpLoggerProcessor>();
            builder.Services.AddSingleton <HttpLoggerService>();
            builder.Services.AddHttpClient(nameof(HttpLoggerService));

            builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, HttpLoggerProvider>());
            LoggerProviderOptions.RegisterProviderOptions <HttpLoggerOptions, HttpLoggerProvider>(builder.Services);

            builder.AddFilter <HttpLoggerProvider>($"{typeof(HttpClient).FullName}.{nameof(HttpLoggerService)}", LogLevel.None);

            return(builder);
        }
        public static ILoggingBuilder AddZLoggerFile(this ILoggingBuilder builder, string fileName, string optionName, Action <ZLoggerOptions> configure)
        {
            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            builder.AddConfiguration();
            builder.Services.Add(ServiceDescriptor.Singleton <ILoggerProvider, ZLoggerFileLoggerProvider>(x => new ZLoggerFileLoggerProvider(fileName, optionName, x.GetService <IOptionsSnapshot <ZLoggerOptions> >())));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, ZLoggerFileLoggerProvider>(builder.Services);

            builder.Services.AddOptions <ZLoggerOptions>(optionName).Configure(configure);

            return(builder);
        }
        /// <param name="fileNameSelector">DateTimeOffset is date of file open time(UTC), int is number sequence.</param>
        /// <param name="timestampPattern">DateTimeOffset is write time of message(UTC). If pattern is different previously then roll new file.</param>
        /// <param name="rollSizeKB">Limit size of single file.</param>
        public static ILoggingBuilder AddZLoggerRollingFile(this ILoggingBuilder builder, Func <DateTimeOffset, int, string> fileNameSelector, Func <DateTimeOffset, DateTimeOffset> timestampPattern, int rollSizeKB, string optionName, Action <ZLoggerOptions> configure)
        {
            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            builder.AddConfiguration();
            builder.Services.Add(ServiceDescriptor.Singleton <ILoggerProvider, ZLoggerRollingFileLoggerProvider>(x => new ZLoggerRollingFileLoggerProvider(fileNameSelector, timestampPattern, rollSizeKB, optionName, x.GetService <IOptionsSnapshot <ZLoggerOptions> >())));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, ZLoggerRollingFileLoggerProvider>(builder.Services);

            builder.Services.AddOptions <ZLoggerOptions>(optionName).Configure(configure);

            return(builder);
        }
Example #26
0
 public static ILoggingBuilder AddColorConsole(this ILoggingBuilder builder,
                                               Action <ColorConsoleLoggerOptions> configure = default)
 {
     builder.AddConfiguration();
     builder.Services.Configure <ColorConsoleLoggerOptions>(x =>
     {
         var options = new ColorConsoleLoggerOptions();
         configure?.Invoke(options);
     });
     builder.Services.TryAddEnumerable(
         ServiceDescriptor.Singleton <ILoggerProvider, ColorConsoleLoggerProvider>());
     LoggerProviderOptions.RegisterProviderOptions <ColorConsoleLoggerOptions, ColorConsoleLoggerProvider>(
         builder.Services);
     return(builder);
 }
Example #27
0
        public static ILoggingBuilder AddZLoggerConsole(this ILoggingBuilder builder, string optionName, Action <ZLoggerOptions> configure, bool consoleOutputEncodingToUtf8 = true)
        {
            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            builder.AddConfiguration();
            builder.Services.Add(ServiceDescriptor.Singleton <ILoggerProvider, ZLoggerConsoleLoggerProvider>(x => new ZLoggerConsoleLoggerProvider(consoleOutputEncodingToUtf8, optionName, x.GetService <IOptionsMonitor <ZLoggerOptions> >())));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, ZLoggerConsoleLoggerProvider>(builder.Services);

            builder.Services.AddOptions <ZLoggerOptions>(optionName).Configure(configure);

            return(builder);
        }
Example #28
0
        /// <summary>
        /// Adds a debug interface to an <see cref="IHostBuilder"/> for displaying log messages as they are written.
        /// </summary>
        /// <remarks>Windows platform only.</remarks>
        /// <param name="hostBuilder">Application <see cref="IHostBuilder"/>.</param>
        /// <param name="configureOptions">An optional callback for configuring <see cref="DebugWindowLoggerOptions"/> at runtime.</param>
        /// <param name="configureWindow">An optional delegate for configuring <see cref="DebugWindow"/> instance.</param>
        /// <param name="configureTab">An optional delegate for configuring <see cref="DebugWindowTabPage"/>s as they are added to the launched <see cref="DebugWindow"/>.</param>
        /// <returns><see cref="IHostBuilder"/> for chaining.</returns>
        public static IHostBuilder ConfigureDebugWindow(
            this IHostBuilder hostBuilder,
            Action <DebugWindowLoggerOptions>?configureOptions = null,
            DebugWindowConfigureAction?configureWindow         = null,
            DebugWindowConfigureTabAction?configureTab         = null)
        {
            if (hostBuilder == null)
            {
                throw new ArgumentNullException(nameof(hostBuilder));
            }

            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                hostBuilder
                .ConfigureLogging((context, loggingBuilder) =>
                {
                    loggingBuilder.AddConfiguration();

                    LoggerProviderOptions.RegisterProviderOptions <DebugWindowLoggerOptions, DebugWindowLoggerProvider>(loggingBuilder.Services);
                })
                .ConfigureServices((context, services) =>
                {
                    // Register DebugWindowHostedService first so we can configure DebugWindowLoggerProvider ahead of any other IHostedServices.
                    services.Insert(0, new ServiceDescriptor(typeof(IHostedService), typeof(DebugWindowHostedService), ServiceLifetime.Singleton));

                    services.AddSingleton <DebugWindowLoggerProvider>();
                    services.AddSingleton <DebugWindowMessageManager>();
                    services.AddSingleton <DebugWindowFactory>();

                    if (configureOptions != null)
                    {
                        services.Configure(configureOptions);
                    }

                    if (configureWindow != null)
                    {
                        services.AddSingleton(configureWindow);
                    }

                    if (configureTab != null)
                    {
                        services.AddSingleton(configureTab);
                    }
                });
            }

            return(hostBuilder);
        }
        public static ILoggingBuilder AddAnsiConsole(this ILoggingBuilder builder)
        {
            builder.AddConfiguration();

            builder.AddAnsiConsoleFormatter <DefaultAnsiConsoleFormatter, DefaultAnsiConsoleFormatterOptions>();
            //TODO : more console formatters

            builder.Services.TryAddSingleton <AnsiConsoleLoggerProvider>();
            builder.Services.TryAddEnumerable(ServiceDescriptor
                                              .Singleton <ILoggerProvider, AnsiConsoleLoggerProvider>(provider =>
                                                                                                      provider.GetRequiredService <AnsiConsoleLoggerProvider>()));
            LoggerProviderOptions
            .RegisterProviderOptions <AnsiConsoleLoggerOptions, AnsiConsoleLoggerProvider>(builder.Services);

            return(builder);
        }
Example #30
0
    public void SetupLogger(string logName)
    {
        LogManager.LoggerFactory = UnityLoggerFactory.Create(builder =>
        {
            builder.SetMinimumLevel(LogLevel.Trace);
#if !UNITY_SERVER
            builder.AddConfiguration();
            builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ILoggerProvider, LogGUIProvider>(x => new LogGUIProvider(this, x.GetService <IOptions <ZLoggerOptions> >())));
            LoggerProviderOptions.RegisterProviderOptions <ZLoggerOptions, LogGUIProvider>(builder.Services);
#endif
            builder.AddZLoggerFile($"{logFolder}/{logName}.{logExtension}", options =>
            {
                options.PrefixFormatter = LogManager.PrefixFormatterConfigure;
            });
        });
        loggingEnabled = true;
    }