Example #1
1
        public Program()
        {
            // a DI based application would get ILoggerFactory injected instead
            var factory = new LoggerFactory();

            // getting the logger immediately using the class's name is conventional
            _logger = factory.CreateLogger(typeof(Program).FullName);

            // providers may be added to an ILoggerFactory at any time, existing ILoggers are updated
            #if !DNXCORE50
            factory.AddNLog(new global::NLog.LogFactory());
            #endif
            factory.AddConsole();
            factory.AddConsole((category, logLevel) => logLevel >= LogLevel.Critical && category.Equals(typeof(Program).FullName));
        }
Example #2
0
        public static ServiceProvider CreateTestServices(
            IServiceProvider applicationServices,
            Project project,
            ReportingChannel channel)
        {
            var services = new ServiceProvider(applicationServices);

            var loggerFactory = new LoggerFactory();
            loggerFactory.AddProvider(new TestHostLoggerProvider(channel));
            services.Add(typeof(ILoggerFactory), loggerFactory);

            var libraryExporter = applicationServices.GetRequiredService<ILibraryExporter>();
            var export = libraryExporter.GetExport(project.Name);

            var projectReference = export.MetadataReferences
                .OfType<IMetadataProjectReference>()
                .Where(r => r.Name == project.Name)
                .FirstOrDefault();

            services.Add(
                typeof(ISourceInformationProvider),
                new SourceInformationProvider(projectReference, loggerFactory.CreateLogger<SourceInformationProvider>()));

            services.Add(typeof(ITestDiscoverySink), new TestDiscoverySink(channel));
            services.Add(typeof(ITestExecutionSink), new TestExecutionSink(channel));

            return services;
        }
Example #3
0
        private static async Task Run(string[] args)
        {
            try
            {
                // This wont work...
                // See https://github.com/aspnet/Configuration/issues/214
                //var config = new ConfigurationBuilder();
                //config.AddJsonFile("wiki.json");

                var jsonConfig = new JsonConfigurationSource("wiki.json");
                var config = new ConfigurationBuilder(jsonConfig);

                var builder = new ContainerBuilder();
                var module = new ConfigurationModule(config.Build());
                builder.RegisterModule(module);
                
                var loggerFactory = new LoggerFactory();
                loggerFactory.AddConsole(LogLevel.Information);
                builder.RegisterInstance(loggerFactory).As<ILoggerFactory>().SingleInstance();

                builder.RegisterType<GetDescriptionAction>().AsImplementedInterfaces().InstancePerDependency();
                builder.RegisterType<AddValueToAlternativeKeysAction>().AsImplementedInterfaces().InstancePerDependency();
                builder.Register(ctx => new CompositeDictEntryAction(ctx.Resolve<IEnumerable<IDictEntryAction>>()))
                    .Keyed<IDictEntryAction>(DictEntryActionKey);
                builder.Register(
                    ctx =>
                        new Wiki.Wiki(ctx.Resolve<HttpClient>(),
                            ctx.ResolveOptionalKeyed<IDictEntryAction>(DictEntryActionKey),
                            ctx.Resolve<ILoggerFactory>()))
                    .AsImplementedInterfaces()
                    .InstancePerDependency();
                builder.RegisterInstance(new DictConfig
                {
                    FilePath = Path.Combine("..", "..", "resources", "kindle_dict.html"),
                    OpfFilePath = Path.Combine("..", "..", "resources"),
                    TemplateFilePath = Path.Combine("..", "..", "resources", "knidle_dict_template.html"),
                    EntryTemplateFilePath = Path.Combine("..", "..", "resources", "knidle_dict_entry_template.html"),
                    OpfTemplateFilePath = Path.Combine("..", "..", "resources", "kindle_dict_template.opf"),
                }).SingleInstance();
                builder.RegisterType<Dict>().AsImplementedInterfaces().SingleInstance();

                var logger = loggerFactory.CreateLogger(typeof (Program).FullName);
                var container = builder.Build();

                var wiki = container.Resolve<IWiki>();
                logger.LogInformation("Getting wiki description...");
                var wikiDesc = await wiki.GetDescriptionAsync().ConfigureAwait(false);
                logger.LogInformation("Getting entries...");
                var entries = await wiki.GetEntriesAsync().ConfigureAwait(false);
                var dict = container.Resolve<IDict>();
                logger.LogInformation("Saving dictionary...");
                await dict.SaveAsync(wikiDesc, entries).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
        }
Example #4
0
        public MigrationTool([NotNull] ILoggerProvider loggerProvider, [NotNull] Assembly assembly)
        {
            Check.NotNull(loggerProvider, nameof(loggerProvider));
            Check.NotNull(assembly, nameof(assembly));

            var loggerFactory = new LoggerFactory();
            loggerFactory.AddProvider(loggerProvider);

            _loggerProvider = loggerProvider;
            _logger = new LazyRef<ILogger>(() => loggerFactory.CreateLogger<MigrationTool>());
            _assembly = assembly;
        }
Example #5
0
        public DatabaseTool(
            [CanBeNull] IServiceProvider serviceProvider,
            [NotNull] ILoggerProvider loggerProvider)
        {
            Check.NotNull(loggerProvider, nameof(loggerProvider));

            _serviceProvider = new ServiceProvider(serviceProvider);
            var loggerFactory = new LoggerFactory();
            loggerFactory.AddProvider(loggerProvider);
            _logger = new LazyRef<ILogger>(() => loggerFactory.CreateLogger<DatabaseTool>());
            _serviceProvider.AddService(typeof(ILogger), _logger.Value);
            _serviceProvider.AddService(typeof(CSharpCodeGeneratorHelper), new CSharpCodeGeneratorHelper());
            _serviceProvider.AddService(typeof(ModelUtilities), new ModelUtilities());
        }
Example #6
0
        // This function will get triggered/executed when a new message is written 
        // on an Azure Queue called queue.
        public async static Task NewImagesTrigger([QueueTrigger(QueueNames.NewImages)]CloudQueueMessage message, CancellationToken cancellationToken)
        {
            var connectionFactory = new StorageConnectionFactory(CloudConfigurationManager.GetSetting("storageAccountConnection"));
            var factory = new LoggerFactory();
            factory.AddConsole();
            factory.AddEventLog();

            var logger = factory.CreateLogger("ToprakWebjobs");

            var imageManager = new ImageManagerService(connectionFactory, logger);

            await imageManager.AddToCirculation(true, cancellationToken);

        }
Example #7
0
        public void Execute(string[] args)
        {
            var options = new Options();
            Parser.Default.ParseArguments(args, options);

            var factory = new LoggerFactory();
            factory.AddConsole();

            var logger = factory.CreateLogger("category-1");

            int number = options.Number;
            for (int i = 0; i < number; i++)
                logger.LogInformation("message " + i);
        }
Example #8
0
        public async static Task ProcessedImagesTrigger([QueueTrigger(QueueNames.Seen)]CloudQueueMessage message, CancellationToken cancellationToken)
        {
            var connectionFactory = new StorageConnectionFactory(CloudConfigurationManager.GetSetting("storageAccountConnection"));
            var factory = new LoggerFactory();
            factory.AddConsole();
            factory.AddEventLog();

            var logger = factory.CreateLogger("ToprakWebjobs");
            var imageRepository = new ImageRepository(connectionFactory, logger);
            var queueRepository = new QueueRepository(connectionFactory, logger);
            IResultsRepository resultsRepository = new ResultsRepository(CloudConfigurationManager.GetSetting("Database"), logger);

            var envelope = TutanakDataEnvelope.GorulmusTutanakMesajiFactory(message.AsString);
            envelope.TutanakData.Image = (new Uri(envelope.TutanakData.Image)).Segments[2];

            await resultsRepository.RecordResult(envelope);

            var imageSeen = envelope.TutanakData;

            var results = (await resultsRepository.GetTutanakResultsAsync(imageSeen.Image)).ToList();

            var compareProperties =
                typeof(GorulmusTutanakMesaji).GetProperties()
                    .Where(p => p.GetCustomAttributes(false).All(a => a.GetType() != typeof(NoCompareAttribute)))
                    .OrderBy(p => p.Name)
                    .Select(p => p.Name);

            var resultHashGroups =
                results.Select(
                    r =>
                    compareProperties.Select(p => r.GetType().GetProperty(p).GetValue(r)).Aggregate((i, j) => $"{i},{j}"))
                    .GroupBy(h => h)
                    .Select(g => g.Count())
                    .OrderByDescending(c => c).ToList();

            var sameReadLimit = Convert.ToInt32(CloudConfigurationManager.GetSetting("SameReadLimit"));

            if (resultHashGroups.Any() && resultHashGroups.Max() >= sameReadLimit)
            {
                await imageRepository.TransferToProcessed(imageSeen.Image, cancellationToken);
                await resultsRepository.RecordReadSuccessResult(envelope);
            } else 
            {
                await
                    queueRepository.AddMessageAsync(
                        QueueNames.ToBeProcessed,
                        new CloudQueueMessage(imageRepository.GetUnprocessedUri(imageSeen.Image).AbsoluteUri),
                        cancellationToken);
            }
        }
Example #9
0
        // Please set the following connection strings in app.config for this WebJob to run:
        // AzureWebJobsDashboard and AzureWebJobsStorage

        public static void Main()
        {
            var connectionFactory = new StorageConnectionFactory(CloudConfigurationManager.GetSetting("storageAccountConnection"));
            var factory = new LoggerFactory();
            factory.AddConsole();
            factory.AddEventLog();
            var logger = factory.CreateLogger("ToprakWebjobs");

            AppDomain.CurrentDomain.UnhandledException +=
                (sender, args) => { logger.LogCritical(args.ExceptionObject.ToString()); };
        
            var host = new JobHost();
            // The following code ensures that the WebJob will be running continuously
            host.RunAndBlock();
        }
        public DatabaseTool(
            [CanBeNull] IServiceProvider serviceProvider,
            [NotNull] ILoggerProvider loggerProvider)
        {
            Check.NotNull(loggerProvider, nameof(loggerProvider));

            _serviceProvider = new ServiceProvider(serviceProvider);
            var loggerFactory = new LoggerFactory();
            loggerFactory.AddProvider(loggerProvider);
            _logger = new LazyRef<ILogger>(() => loggerFactory.CreateLogger<DatabaseTool>());
            _serviceProvider.AddService(typeof(ILogger), _logger.Value);
            _serviceProvider.AddService(typeof(IFileService), new FileSystemFileService());
            _serviceProvider.AddService(typeof(CSharpCodeGeneratorHelper), new CSharpCodeGeneratorHelper());
            _serviceProvider.AddService(typeof(ModelUtilities), new ModelUtilities());
            var metadataReferencesProvider = new MetadataReferencesProvider(_serviceProvider);
            _serviceProvider.AddService(typeof(MetadataReferencesProvider), metadataReferencesProvider);
            var compilationService = new RoslynCompilationService();
            _serviceProvider.AddService(typeof(ITemplating), new RazorTemplating(compilationService, metadataReferencesProvider));
        }
Example #11
0
        public void IsEnabled_IgnoresExceptionInIntermediateLoggers()
        {
            // Arrange
            var store = new List<string>();
            var loggerFactory = new LoggerFactory();
            loggerFactory.AddProvider(new CustomLoggerProvider("provider1", ThrowExceptionAt.None, store));
            loggerFactory.AddProvider(new CustomLoggerProvider("provider2", ThrowExceptionAt.IsEnabled, store));
            loggerFactory.AddProvider(new CustomLoggerProvider("provider3", ThrowExceptionAt.None, store));
            var logger = loggerFactory.CreateLogger("Test");

            // Act
            var aggregateException = Assert.Throws<AggregateException>(() => logger.LogInformation("Hello!"));

            // Assert
            Assert.Equal(new[] { "provider1.Test-Hello!", "provider3.Test-Hello!" }, store);
            Assert.NotNull(aggregateException);
            Assert.Equal("An error occurred while writing to logger(s).", aggregateException.Message);
            Assert.Equal(1, aggregateException.InnerExceptions.Count);
            var exception = aggregateException.InnerExceptions[0];
            Assert.Equal("provider2.Test-Error occurred while checking if logger is enabled.", exception.Message);
        }
Example #12
0
        public void BeginScope_IgnoresExceptionInIntermediateLoggersAndThrowsAggregateException()
        {
            // Arrange
            var store = new List<string>();
            var loggerFactory = new LoggerFactory();
            loggerFactory.AddProvider(new CustomLoggerProvider("provider1", ThrowExceptionAt.None, store));
            loggerFactory.AddProvider(new CustomLoggerProvider("provider2", ThrowExceptionAt.BeginScope, store));
            loggerFactory.AddProvider(new CustomLoggerProvider("provider3", ThrowExceptionAt.None, store));
            var logger = loggerFactory.CreateLogger("Test");

            // Act
            var aggregateException = Assert.Throws<AggregateException>(() => logger.BeginScope("Scope1"));

            // Assert
            Assert.Equal(new[] { "provider1.Test-Scope1", "provider3.Test-Scope1" }, store);
            Assert.NotNull(aggregateException);
            Assert.Equal("An error occurred while writing to logger(s).", aggregateException.Message);
            Assert.Equal(1, aggregateException.InnerExceptions.Count);
            var exception = aggregateException.InnerExceptions[0];
            Assert.Equal("provider2.Test-Error occurred while creating scope.", exception.Message);
        }
Example #13
0
        public void Log_AggregatesExceptionsFromMultipleLoggers()
        {
            // Arrange
            var store = new List<string>();
            var loggerFactory = new LoggerFactory();
            loggerFactory.AddProvider(new CustomLoggerProvider("provider1", ThrowExceptionAt.Log, store));
            loggerFactory.AddProvider(new CustomLoggerProvider("provider2", ThrowExceptionAt.Log, store));
            var logger = loggerFactory.CreateLogger("Test");

            // Act
            var aggregateException = Assert.Throws<AggregateException>(() => logger.LogInformation("Hello!"));

            // Assert
            Assert.Empty(store);
            Assert.NotNull(aggregateException);
            Assert.Equal("An error occurred while writing to logger(s).", aggregateException.Message);
            var exceptions = aggregateException.InnerExceptions;
            Assert.Equal(2, exceptions.Count);
            Assert.Equal("provider1.Test-Error occurred while logging data.", exceptions[0].Message);
            Assert.Equal("provider2.Test-Error occurred while logging data.", exceptions[1].Message);
        }
Example #14
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.Register(
                c =>
                    {
                        var factory = new LoggerFactory();
                        factory.AddEventLog();
                        return factory.CreateLogger("ToprakWeb");
                    }).As<ILogger>().InstancePerLifetimeScope();

            var connectionString = this.config["Data:ImageRepository:ConnectionString"];
            var databaseConnectionString = this.config["Data:Database:ConnectionString"];

            builder.Register(
                c =>
                connectionString == "Dev"
                    ? new StorageConnectionFactory()
                    : new StorageConnectionFactory(connectionString))
                .As<IStorageConnectionFactory>()
                .InstancePerLifetimeScope();

            builder.Register(c => new QueueRepository(c.Resolve<IStorageConnectionFactory>(), c.Resolve<ILogger>()))
                .As<IQueueRepository>()
                .InstancePerLifetimeScope();

            builder.Register(c => new ImageRepository(c.Resolve<IStorageConnectionFactory>(), c.Resolve<ILogger>()))
                .As<IImageRepository>()
                .InstancePerLifetimeScope();


            builder.Register(c => new ImageManagerService(c.Resolve<IQueueRepository>(), c.Resolve<IImageRepository>(), c.Resolve<ILogger>()))
                .As<IImageManagerService>()
                .InstancePerLifetimeScope();

            builder.Register(c => new ResultsRepository.ResultsRepository(databaseConnectionString, c.Resolve<ILogger>()))
                .As<IResultsRepository>()
                .InstancePerLifetimeScope();
        }
Example #15
0
        public Program()
        {
            // a DI based application would get ILoggerFactory injected instead
            var factory = new LoggerFactory();

            // getting the logger immediately using the class's name is conventional
            _logger = factory.CreateLogger(typeof(Program).FullName);

            // providers may be added to an ILoggerFactory at any time, existing ILoggers are updated
            #if !DNXCORE50
            factory.AddNLog(new global::NLog.LogFactory());

            factory.AddSerilog(new Serilog.LoggerConfiguration()
                .Enrich.WithMachineName()
                .Enrich.WithProcessId()
                .Enrich.WithThreadId()
                .MinimumLevel.Debug()
                .WriteTo.RollingFile("file-{Date}.txt", outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {Level}:{EventId} [{SourceContext}] {Message}{NewLine}{Exception}")
                .WriteTo.Sink(new RollingFileSink("file-{Date}.json", new JsonFormatter(), null, null))
                .WriteTo.Sink(new FileSink("dump.txt", new RawFormatter(), null)));
            #endif
            factory.AddConsole();
            factory.AddConsole((category, logLevel) => logLevel >= LogLevel.Critical && category.Equals(typeof(Program).FullName));
        }
Example #16
0
 public Program()
 {
     var loggerFactory = new LoggerFactory();
     loggerFactory.AddConsole();
     _logger = loggerFactory.CreateLogger<Program>();
 }
        private ServiceCollection SetupInitialServices()
        {
            var serviceCollection = new ServiceCollection();
#if DNX451 || DNXCORE50
            var manifest = _serviceProvider.GetRequiredService<IServiceManifest>();
            if (manifest != null)
            {
                foreach (var service in manifest.Services)
                {
                    serviceCollection.AddTransient(
                        service, sp => _serviceProvider.GetService(service));
                }
            }
#endif

            var loggerFactory = new LoggerFactory();
            loggerFactory.AddProvider(_loggerProvider);
            var logger = loggerFactory.CreateLogger<DatabaseTool>();
            serviceCollection.AddScoped(typeof(ILogger), sp => logger);
            serviceCollection.AddScoped<IFileService, FileSystemFileService>();

            return serviceCollection;
        }
        private CommandBuilder setupCommandBuilder(DbContext context)
        {
            var source = new EntityMaterializerSource(new MemberMapper(new FieldMatcher()));

            var loggerFactory = new LoggerFactory();

            var selectExpression = new SelectExpression();
            var queryCompilationContext = new RelationalQueryCompilationContext(
                context.Model,
                loggerFactory.CreateLogger("new"),
                new LinqOperatorProvider(),
                new RelationalResultOperatorHandler(),
                source,
                new EntityKeyFactorySource(new BoxedValueReaderSource()),
                new AsyncQueryMethodProvider(),
                new CompositeMethodCallTranslator());

            return new CommandBuilder(selectExpression, queryCompilationContext);
        }
Example #19
0
 public SmokeTests()
 {
     var loggerFactory = new LoggerFactory();
     loggerFactory.AddConsole();
     _logger = loggerFactory.CreateLogger<SmokeTests>();
 }