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(); }
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(); }
/// <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); }
public void AddLogAppender(ILogAppender logAppender) { LogAppenders = LogAppenders.Concat(new[] { logAppender }); }