static void Main()
        {
            var assembly = typeof(Program).Assembly;

            var loggerFactory = LoggerFactory.Create(_ => _.AddConsole());
            var logAppender   = new DefaultLogAppender(GetCurrentLoggingContext, loggerFactory);
            var logAppenders  = new LogAppenders(Array.Empty <ICanConfigureLogAppenders>(), logAppender);
            var logger        = new Logger(logAppenders) as Dolittle.Logging.ILogger;

            logger.Information($"Creating assembly context for '{assembly}'");

            var assemblyContext = Dolittle.Assemblies.AssemblyContext.From(assembly);

            var projectReferencedAssemblies = assemblyContext.GetProjectReferencedAssemblies();

            foreach (var projectReferencedAssembly in projectReferencedAssemblies)
            {
                logger.Information($"Project referenced assembly '{projectReferencedAssembly.FullName}'");
            }

            var allExportedTypes = projectReferencedAssemblies.SelectMany(_ => _.ExportedTypes).ToArray();
            var controllerType   = allExportedTypes.First(_ => _ == typeof(MyController));

            var referencedAssemblies = assemblyContext.GetReferencedAssemblies();

            logger.Information($"Total referenced assemblies : {referencedAssemblies.Count()}");

            logger.Information($"Totally {allExportedTypes.Length} exported types");
            logger.Information("Done");

            loggerFactory.Dispose();
        }
예제 #2
0
        static void Main()
        {
            var loggerFactory = LoggerFactory.Create(_ => _.AddConsole());
            var logAppender   = new DefaultLogAppender(GetCurrentLoggingContext, loggerFactory);
            var logAppenders  = new LogAppenders(Array.Empty <ICanConfigureLogAppenders>(), logAppender);
            var logger        = new Logger(logAppenders) as Dolittle.Logging.ILogger;

            logger.Information("Starting assembly systems boot");

            var assemblies = Boot.Start(logger);

            foreach (var assembly in assemblies.GetAll())
            {
                logger.Information($"Discovered and loaded assembly '{assembly.FullName}'");
            }

            logger.Information("Done");

            loggerFactory.Dispose();
        }
        static void Main()
        {
            var loggerFactory = LoggerFactory.Create(_ => _.AddConsole());
            var logAppender   = new DefaultLogAppender(GetCurrentLoggingContext, loggerFactory);
            var logAppenders  = new LogAppenders(Array.Empty <ICanConfigureLogAppenders>(), logAppender);
            var logger        = new Logger(logAppenders) as Dolittle.Logging.ILogger;

            logger.Information("Starting assembly systems boot");

            var assemblies = Dolittle.Assemblies.Bootstrap.Boot.Start(logger);
            var typeFinder = Dolittle.Types.Bootstrap.Boot.Start(assemblies, new AsyncScheduler(), logger);

            logger.Information($"Indexed '{typeFinder.All.Count()}' types");

            foreach (var controller in typeFinder.FindMultiple(typeof(ISomething)))
            {
                logger.Information($"Found '{controller.FullName}' implementation");
            }

            logger.Information("Done");

            loggerFactory.Dispose();
        }
예제 #4
0
        /// <summary>
        /// Discover any <see cref="ICanConfigureLogAppenders"/> from the entry assembly and setup
        /// <see cref="ILogAppenders"/>
        /// </summary>
        /// <returns>An instance of <see cref="ILogAppenders"/> that can be used</returns>
        public static ILogAppenders Start(ILoggerFactory loggerFactory, ILogAppender defaultLogAppender = null, Assembly assembly = null)
        {
            if (assembly == null)
            {
                assembly = Assembly.GetEntryAssembly();
            }
            var types = assembly.GetTypes();

            var configuratorTypes = types.Where(t => t.HasInterface <ICanConfigureLogAppenders>());

            var configurators = new List <ICanConfigureLogAppenders>();

            configuratorTypes.ForEach(c =>
            {
                ThrowIfLogAppenderConfiguratorIsMissingDefaultConstructor(c);
                var configurator = Activator.CreateInstance(c) as ICanConfigureLogAppenders;
                configurators.Add(configurator);
            });

            var logAppenders = new LogAppenders(configurators, defaultLogAppender);

            return(logAppenders);
        }
예제 #5
0
파일: Log.cs 프로젝트: DrBarnabus/DacTools
 public void AddLogAppender(ILogAppender logAppender)
 {
     LogAppenders = LogAppenders.Concat(new[] { logAppender });
 }