private void ServiceProviderNullRaisesArgumentNullException()
        {
            IServiceProvider nullProvider = null;
            var options = new LogstashOptions();
            var ex      = Assert.Throws <ArgumentNullException>(() => new LogstashHttpLoggerProvider(nullProvider, options));

            Assert.Equal("serviceProvider", ex.ParamName);
        }
        private void ServiceProviderIsSet()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var options         = new LogstashOptions();
            var provider        = new LogstashHttpLoggerProvider(serviceProvider, options);

            Assert.Same(serviceProvider, provider.ServiceProvider);
        }
Beispiel #3
0
        private void LogLevelConverterNullRaisesArgumentNullException()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var options         = new LogstashOptions();
            var ex = Assert.Throws <ArgumentNullException>(() => new LogMessageBuilder(serviceProvider, null, options));

            Assert.Equal("logLevelConverter", ex.ParamName);
        }
        private void OptionsNullRaisesArgumentNullException()
        {
            var             serviceProvider = Mock.Of <IServiceProvider>();
            LogstashOptions nullOptions     = null;
            var             ex = Assert.Throws <ArgumentNullException>(() => new LogstashHttpLoggerProvider(serviceProvider, nullOptions));

            Assert.Equal("options", ex.ParamName);
        }
        private void StateAndExceptionNullReturnsNull()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var converter       = new LogLevelConverter();
            var options         = new LogstashOptions();
            var builder         = new LogMessageBuilder(serviceProvider, converter, options);

            var message = builder.Build("myLogger", LogLevel.Information, null, null);
        }
Beispiel #6
0
        private void LogLevelConverterIsSet()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var converter       = new LogLevelConverter();
            var options         = new LogstashOptions();

            var builder = new LogMessageBuilder(serviceProvider, converter, options);

            Assert.Same(converter, builder.LogLevelConverter);
        }
Beispiel #7
0
        private void CurrentProcessIsSet()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var converter       = new LogLevelConverter();
            var options         = new LogstashOptions();

            var builder = new LogMessageBuilder(serviceProvider, converter, options);

            Assert.NotNull(builder.CurrentProcess);
        }
        private void FormatterIsCalled()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var converter       = new LogLevelConverter();
            var options         = new LogstashOptions();

            var isCalled = false;

            var builder = new LogMessageBuilder(serviceProvider, converter, options);

            var message = builder.Build("myLogger", LogLevel.Information, "state", null, (state, ex) => { isCalled = true; return("called"); });

            Assert.True(isCalled);
        }
        public static LogstashOptions Read(Action <LogstashOptions> setupAction)
        {
            if (setupAction == null)
            {
                throw new ArgumentNullException(nameof(setupAction), $"{nameof(setupAction)} cannot be null.");
            }

            var options = new LogstashOptions();

            setupAction.Invoke(options);

            Validate(options);

            return(options);
        }
        private void IPAddressIsSet()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var converter       = new LogLevelConverter();
            var options         = new LogstashOptions()
            {
                AppId = "myApp", Index = "myIndex", Url = "http://localhost"
            };

            var builder = new LogMessageBuilder(serviceProvider, converter, options);

            var message = builder.Build("myLogger", LogLevel.Information, "state", null);

            Assert.Equal(builder.LocalIPAddress, message.Header.IPAddress);
        }
        private void MessageVersionIsSet()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var converter       = new LogLevelConverter();
            var options         = new LogstashOptions()
            {
                AppId = "myApp", Index = "myIndex", Url = "http://localhost"
            };

            var builder = new LogMessageBuilder(serviceProvider, converter, options);

            var message = builder.Build("myLogger", LogLevel.Information, "state", null);

            Assert.Equal(options.MessageVersion, message.Body.VersionNumber);
        }
        private void CorrelationIdIsSetWithoutRegisteredCorrelationContext()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var converter       = new LogLevelConverter();
            var options         = new LogstashOptions()
            {
                AppId = "myApp", Index = "myIndex", Url = "http://localhost"
            };

            var builder = new LogMessageBuilder(serviceProvider, converter, options);

            var message = builder.Build("myLogger", LogLevel.Information, "state", null);

            Assert.NotNull(message.Header.Correlation.CorrelationId);
        }
        private void LevelIsConverted()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var converter       = new Mock <ILogLevelConverter>();
            var options         = new LogstashOptions();

            var level = LogLevel.Information;

            converter.Setup((c) => c.ToLogStashLevel(level)).Returns(LogstashLevel.Information).Verifiable();

            var builder = new LogMessageBuilder(serviceProvider, converter.Object, options);

            var message = builder.Build("myLogger", LogLevel.Information, "state", null);

            converter.Verify();
        }
        private void TimestampIsSet()
        {
            var serviceProvider = Mock.Of <IServiceProvider>();
            var converter       = new LogLevelConverter();
            var options         = new LogstashOptions()
            {
                AppId = "myApp", Index = "myIndex", Url = "http://localhost"
            };

            var builder = new LogMessageBuilder(serviceProvider, converter, options);

            var message = builder.Build("myLogger", LogLevel.Information, "state", null);

            var now = DateTime.Now;

            Assert.InRange(message.Header.TimeStamp, now.AddMinutes(-1), now.AddMinutes(1));
        }
        public static LogstashOptions Read(IConfiguration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config), $"{nameof(config)} cannot be null.");
            }

            var options = new LogstashOptions()
            {
                AppId        = config.Get <string>(Defaults.ConfigKeys.AppId),
                Url          = config.Get <string>(Defaults.ConfigKeys.Url),
                Index        = config.Get <string>(Defaults.ConfigKeys.Index),
                MinimumLevel = config.Get <LogLevel>(Defaults.ConfigKeys.MinimumLevel)
            };

            Validate(options);

            return(options);
        }
        private void CorrelationIdIsSetFromRegisteredCorrelationContext()
        {
            var correlationContext = new Mock <ICorrelationContext>();
            var serviceProvider    = new Mock <IServiceProvider>();
            var converter          = new LogLevelConverter();
            var options            = new LogstashOptions()
            {
                AppId = "myApp", Index = "myIndex", Url = "http://localhost"
            };

            correlationContext.SetupGet(p => p.CorrelationId).Returns("correlation-id");
            serviceProvider.Setup(sp => sp.GetService(typeof(ICorrelationContext))).Returns(correlationContext.Object);

            var builder = new LogMessageBuilder(serviceProvider.Object, converter, options);

            var message = builder.Build("myLogger", LogLevel.Information, "state", null);

            Assert.Equal("correlation-id", message.Header.Correlation.CorrelationId);
        }
Beispiel #17
0
 public LogMessageBuilder(IServiceProvider serviceProvider, ILogLevelConverter logLevelConverter, LogstashOptions options)
 {
     if (serviceProvider == null)
     {
         throw new ArgumentNullException(nameof(serviceProvider), $"{nameof(serviceProvider)} cannot be null.");
     }
     if (logLevelConverter == null)
     {
         throw new ArgumentNullException(nameof(logLevelConverter), $"{nameof(logLevelConverter)} cannot be null.");
     }
     if (options == null)
     {
         throw new ArgumentNullException(nameof(options), $"{nameof(options)} cannot be null.");
     }
     ServiceProvider   = serviceProvider;
     LogLevelConverter = logLevelConverter;
     Options           = options;
     LocalIPAddress    = GetLocalIPAddress();
     CurrentProcess    = GetCurrentProcessId();
 }
        private static void Validate(LogstashOptions options)
        {
            if (String.IsNullOrWhiteSpace(options.AppId))
            {
                throw new InvalidOptionException(Defaults.ConfigKeys.AppId, options.AppId, "Logging AppId is mandatory.");
            }
            if (String.IsNullOrWhiteSpace(options.Url))
            {
                throw new InvalidOptionException(Defaults.ConfigKeys.Url, options.Url, "Logging Url is mandatory.");
            }
            if (String.IsNullOrWhiteSpace(options.Index))
            {
                throw new InvalidOptionException(Defaults.ConfigKeys.Index, options.Index, "Logging Index is mandatory.");
            }

            try
            {
                var uri = new Uri(options.Url);
            }
            catch (UriFormatException)
            {
                throw new InvalidOptionException(Defaults.ConfigKeys.Url, options.Url, "Logging Url is not a valid uri.");
            }
        }