static IBusControl Build(IBusFactory factory, IBusConfiguration busConfiguration, IEnumerable <ValidationResult> validationResult) { if (LogContext.Current == null) { LogContext.ConfigureCurrentLogContext(); } busConfiguration.HostConfiguration.LogContext = LogContext.Current; var result = BusConfigurationResult.CompileResults(validationResult); try { var busReceiveEndpointConfiguration = factory.CreateBusEndpointConfiguration(x => x.ConfigureConsumeTopology = false); var host = busConfiguration.HostConfiguration.Build(); var bus = new MassTransitBus(host, busConfiguration.BusObservers, busReceiveEndpointConfiguration); TaskUtil.Await(() => busConfiguration.BusObservers.PostCreate(bus)); return(bus); } catch (Exception ex) { TaskUtil.Await(() => busConfiguration.BusObservers.CreateFaulted(ex)); throw new ConfigurationException(result, "An exception occurred during bus creation", ex); } }
/// <summary> /// Configure the built-in <see cref="LogContext"/> to use the specified <see cref="ILoggerFactory"/>. Note that this is actually a global /// instance, and is not configured for each bus. /// </summary> /// <param name="configurator">The bus factory configurator</param> /// <param name="loggerFactory">The loggerFactory instance</param> /// <returns></returns> /// <exception cref="ArgumentNullException"></exception> public static void SetLoggerFactory(this IBusFactoryConfigurator configurator, ILoggerFactory loggerFactory) { if (configurator == null) { throw new ArgumentNullException(nameof(configurator)); } if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } LogContext.ConfigureCurrentLogContext(loggerFactory); }