Example #1
0
 public void LoggingFilterHelper_Tests(string hostJsonContent, bool?verboseLogging, LogLevel expectedDefaultLogLevel)
 {
     try
     {
         FileSystemHelpers.WriteAllTextToFile(_hostJsonFilePath, hostJsonContent);
         var configuration = Utilities.BuildHostJsonConfigutation(_hostOptions);
         LoggingFilterHelper loggingFilterHelper = new LoggingFilterHelper(configuration, verboseLogging);
         if (verboseLogging == null)
         {
             Assert.False(loggingFilterHelper.VerboseLogging);
         }
         Assert.Equal(loggingFilterHelper.DefaultLogLevel, expectedDefaultLogLevel);
         if (hostJsonContent.Contains("Default"))
         {
             Assert.Equal(loggingFilterHelper.DefaultLogLevel, loggingFilterHelper.UserLogDefaultLogLevel);
             Assert.Equal(loggingFilterHelper.DefaultLogLevel, loggingFilterHelper.SystemLogDefaultLogLevel);
         }
         else
         {
             Assert.Equal(LogLevel.Information, loggingFilterHelper.UserLogDefaultLogLevel);
             if (verboseLogging.HasValue && verboseLogging.Value)
             {
                 Assert.Equal(LogLevel.Information, loggingFilterHelper.SystemLogDefaultLogLevel);
             }
             else
             {
                 Assert.Equal(LogLevel.Warning, loggingFilterHelper.SystemLogDefaultLogLevel);
             }
         }
     }
     finally
     {
         DeleteIfExists(_workerDir);
     }
 }
Example #2
0
 public ColoredConsoleLogger(string category, LoggingFilterHelper loggingFilterHelper, LoggerFilterOptions loggerFilterOptions)
 {
     _category            = category;
     _loggerFilterOptions = loggerFilterOptions ?? throw new ArgumentNullException(nameof(loggerFilterOptions));
     _loggingFilterHelper = loggingFilterHelper ?? throw new ArgumentNullException(nameof(loggingFilterHelper));
     _verboseErrors       = StaticSettings.IsDebug;
 }
        public void LoggingFilterHelper_Tests(string categoryKey, bool?verboseLogging, LogLevel expectedDefaultLogLevel)
        {
            var settings = new Dictionary <string, string>();

            if (!string.IsNullOrEmpty(categoryKey))
            {
                settings.Add(ConfigurationPath.Combine(ConfigurationSectionNames.JobHost, "logging", "loglevel", categoryKey), expectedDefaultLogLevel.ToString());
            }
            var testConfiguration = TestUtils.CreateSetupWithConfiguration(settings);
            LoggingFilterHelper loggingFilterHelper = new LoggingFilterHelper(testConfiguration, verboseLogging);

            if (verboseLogging == null)
            {
                Assert.False(loggingFilterHelper.VerboseLogging);
            }
            if (!string.IsNullOrEmpty(categoryKey) && categoryKey.Equals("Default", StringComparison.OrdinalIgnoreCase))
            {
                Assert.Equal(expectedDefaultLogLevel, loggingFilterHelper.UserLogDefaultLogLevel);
                Assert.Equal(expectedDefaultLogLevel, loggingFilterHelper.SystemLogDefaultLogLevel);
            }
            else
            {
                Assert.Equal(LogLevel.Information, loggingFilterHelper.UserLogDefaultLogLevel);
                if (verboseLogging.HasValue && verboseLogging.Value)
                {
                    Assert.Equal(LogLevel.Information, loggingFilterHelper.SystemLogDefaultLogLevel);
                }
                else
                {
                    Assert.Equal(LogLevel.Warning, loggingFilterHelper.SystemLogDefaultLogLevel);
                }
            }
        }
Example #4
0
        public Startup(WebHostBuilderContext builderContext, ScriptApplicationHostOptions hostOptions, string corsOrigins, bool corsCredentials, bool enableAuth, LoggingFilterHelper loggingFilterHelper)
        {
            _builderContext      = builderContext;
            _hostOptions         = hostOptions;
            _enableAuth          = enableAuth;
            _loggingFilterHelper = loggingFilterHelper;

            if (!string.IsNullOrEmpty(corsOrigins))
            {
                _corsOrigins     = corsOrigins.Split(',', StringSplitOptions.RemoveEmptyEntries);
                _corsCredentials = corsCredentials;
            }
        }
 public void IsEnabled_Tests(string hostJsonContent, string category, LogLevel logLevel, bool expected)
 {
     try
     {
         FileSystemHelpers.WriteAllTextToFile(_hostJsonFilePath, hostJsonContent);
         var configuration = Utilities.BuildHostJsonConfigutation(_hostOptions);
         LoggingFilterHelper loggingFilterHelper = new LoggingFilterHelper(configuration, false);
         Assert.Equal(expected, loggingFilterHelper.IsEnabled(category, logLevel));
     }
     finally
     {
         DeleteIfExists(_workerDir);
     }
 }
Example #6
0
        private async Task <IWebHost> BuildWebHost(ScriptApplicationHostOptions hostOptions, Uri listenAddress, Uri baseAddress, X509Certificate2 certificate)
        {
            IDictionary <string, string> settings = await GetConfigurationSettings(hostOptions.ScriptPath, baseAddress);

            settings.AddRange(LanguageWorkerHelper.GetWorkerConfiguration(LanguageWorkerSetting));
            UpdateEnvironmentVariables(settings);

            LoggingFilterHelper loggingFilterHelper = new LoggingFilterHelper(_hostJsonConfig, VerboseLogging);

            var defaultBuilder = Microsoft.AspNetCore.WebHost.CreateDefaultBuilder(Array.Empty <string>());

            if (UseHttps)
            {
                defaultBuilder
                .UseKestrel(options =>
                {
                    options.Listen(IPAddress.Any, listenAddress.Port, listenOptins =>
                    {
                        listenOptins.UseHttps(certificate);
                    });
                });
            }
            return(defaultBuilder
                   .UseSetting(WebHostDefaults.ApplicationKey, typeof(Startup).Assembly.GetName().Name)
                   .UseUrls(listenAddress.ToString())
                   .ConfigureAppConfiguration(configBuilder =>
            {
                configBuilder.AddEnvironmentVariables();
            })
                   .ConfigureLogging(loggingBuilder =>
            {
                loggingBuilder.ClearProviders();
                loggingBuilder.Services.AddSingleton <ILoggerProvider>(p =>
                {
                    //Cache LoggerFilterOptions to be used by the logger to filter logs based on content
                    var filterOptions = p.GetService <IOptions <LoggerFilterOptions> >().Value;
                    // Set min level to SystemLogDefaultLogLevel.
                    filterOptions.MinLevel = loggingFilterHelper.SystemLogDefaultLogLevel;
                    return new ColoredConsoleLoggerProvider(loggingFilterHelper, filterOptions);
                });
                // This is needed to filter system logs only for known categories
                loggingBuilder.AddDefaultWebJobsFilters <ColoredConsoleLoggerProvider>(LogLevel.Trace);
            })
                   .ConfigureServices((context, services) => services.AddSingleton <IStartup>(new Startup(context, hostOptions, CorsOrigins, CorsCredentials, EnableAuth, loggingFilterHelper)))
                   .Build());
        }
 public void IsCI_Tests(bool isCiEnv, bool?verboseLogging, bool expected)
 {
     try
     {
         if (isCiEnv)
         {
             Environment.SetEnvironmentVariable(LoggingFilterHelper.Ci_Build_Number, "90l99");
         }
         var testConfiguration = TestUtils.CreateSetupWithConfiguration(null);
         LoggingFilterHelper loggingFilterHelper = new LoggingFilterHelper(testConfiguration, verboseLogging);
         Assert.Equal(expected, loggingFilterHelper.IsCiEnvironment(verboseLogging.HasValue));
     }
     finally
     {
         Environment.SetEnvironmentVariable(LoggingFilterHelper.Ci_Build_Number, "");
     }
 }
Example #8
0
 public void IsCI_Tests(bool isCiEnv, bool?verboseLogging, bool expected)
 {
     try
     {
         if (isCiEnv)
         {
             Environment.SetEnvironmentVariable(LoggingFilterHelper.Ci_Build_Number, "90l99");
         }
         string defaultJson = "{\"version\": \"2.0\"}";
         FileSystemHelpers.WriteAllTextToFile(_hostJsonFilePath, defaultJson);
         var configuration = Utilities.BuildHostJsonConfigutation(_hostOptions);
         LoggingFilterHelper loggingFilterHelper = new LoggingFilterHelper(configuration, verboseLogging);
         Assert.Equal(expected, loggingFilterHelper.IsCiEnvironment(verboseLogging.HasValue));
         Environment.SetEnvironmentVariable(LoggingFilterHelper.Ci_Build_Number, "");
     }
     finally
     {
         DeleteIfExists(_workerDir);
     }
 }
Example #9
0
        private async Task <IWebHost> BuildWebHost(ScriptApplicationHostOptions hostOptions, Uri listenAddress, Uri baseAddress, X509Certificate2 certificate)
        {
            IDictionary <string, string> settings = await GetConfigurationSettings(hostOptions.ScriptPath, baseAddress);

            settings.AddRange(LanguageWorkerHelper.GetWorkerConfiguration(LanguageWorkerSetting));
            UpdateEnvironmentVariables(settings);

            LoggingFilterHelper loggingFilterHelper = new LoggingFilterHelper(_hostJsonConfig, VerboseLogging);

            var defaultBuilder = Microsoft.AspNetCore.WebHost.CreateDefaultBuilder(Array.Empty <string>());

            if (UseHttps)
            {
                defaultBuilder
                .UseKestrel(options =>
                {
                    options.Listen(IPAddress.Any, listenAddress.Port, listenOptins =>
                    {
                        listenOptins.UseHttps(certificate);
                    });
                });
            }
            return(defaultBuilder
                   .UseSetting(WebHostDefaults.ApplicationKey, typeof(Startup).Assembly.GetName().Name)
                   .UseUrls(listenAddress.ToString())
                   .ConfigureAppConfiguration(configBuilder =>
            {
                configBuilder.AddEnvironmentVariables();
            })
                   .ConfigureLogging(loggingBuilder =>
            {
                loggingBuilder.ClearProviders();
                loggingFilterHelper.AddConsoleLoggingProvider(loggingBuilder);
            })
                   .ConfigureServices((context, services) => services.AddSingleton <IStartup>(new Startup(context, hostOptions, CorsOrigins, CorsCredentials, EnableAuth, loggingFilterHelper)))
                   .Build());
        }
Example #10
0
 public LoggingBuilder(LoggingFilterHelper loggingFilterHelper)
 {
     _loggingFilterHelper = loggingFilterHelper;
 }
 public ColoredConsoleLoggerProvider(LoggingFilterHelper loggingFilterHelper)
 {
     _loggingFilterHelper = loggingFilterHelper;
 }
 public ColoredConsoleLogger(string category, LoggingFilterHelper loggingFilterHelper)
 {
     _category            = category;
     _loggingFilterHelper = loggingFilterHelper;
     _verboseErrors       = StaticSettings.IsDebug;
 }
Example #13
0
 public ColoredConsoleLoggerProvider(LoggingFilterHelper loggingFilterHelper, LoggerFilterOptions loggerFilterOptions)
 {
     _loggerFilterOptions = loggerFilterOptions ?? throw new ArgumentNullException(nameof(loggerFilterOptions));
     _loggingFilterHelper = loggingFilterHelper ?? throw new ArgumentNullException(nameof(loggingFilterHelper));
 }