public static ILoggerFactory AddWebJob(this ILoggerFactory factory,
                                        ICustomErrorLogger customErrorLogger,
                                        Func <string, LogLevel, bool> filter = null)
 {
     factory.AddProvider(new ErrorLoggerProvider(filter, customErrorLogger));
     return(factory);
 }
 public static ILoggerFactory AddWebJob(this ILoggerFactory factory, ICustomErrorLogger customErrorLogger, LogLevel minLevel)
 {
     return(AddWebJob(
                factory,
                customErrorLogger,
                (_, logLevel) => logLevel >= minLevel));
 }
        public static void Main(string[] args)
        {
            var services = new ServiceCollection();

            services.AddScoped <ICustomErrorLogger, CustomErrorLogger>();
            services.AddScoped <TestClass, TestClass>();
            services.AddLogging();
            _provider = services.BuildServiceProvider();


            Configuration = GetConfiguration();



            ILoggerFactory     loggerFactory     = _provider.GetRequiredService <ILoggerFactory>();
            ICustomErrorLogger customErrorLogger = _provider.GetRequiredService <ICustomErrorLogger>();


            loggerFactory.AddWebJob(customErrorLogger, Microsoft.Extensions.Logging.LogLevel.Error);



            TestClass tc = _provider.GetRequiredService <TestClass>();

            tc.LogEvent("Helllo there").Wait();

            Console.ReadLine();
        }
 public ErrorLoggerProvider(Func <string, LogLevel, bool> filter, ICustomErrorLogger customErrorLogger)
 {
     _customErrorLogger = customErrorLogger;
     _filter            = filter;
 }
 public WebJobLogger(string categoryName, Func <string, LogLevel, bool> filter, ICustomErrorLogger customErrorLogger)
 {
     _categoryName      = categoryName;
     _filter            = filter;
     _customErrorLogger = customErrorLogger;
 }