private static void Run(IServiceProvider serviceProvider)
        {
            ExtensionsLogger.Use();     // MassTransit
            NLogLogWriterFactory.Use(); // Topshelf

            var loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>();
            var logger        = loggerFactory.CreateLogger(typeof(Program));

            logger.LogInformation("Program Starting");
            logger.LogInformation("Environment={0}", EnvironmentName);
            logger.LogInformation(Assembly.GetExecutingAssembly().FullName);

            // configure and run the topshelf service
            HostFactory.Run(hostConfigurator =>
            {
                // log exception details
                hostConfigurator.OnException(exception => logger.LogError(exception.ToString()));

                // configure the hosted service
                hostConfigurator.Service <IHostedService>(serviceConfigurator =>
                {
                    serviceConfigurator.ConstructUsing(serviceProvider.GetRequiredService <IHostedService>);
                    serviceConfigurator.WhenStarted(async host => await host.StartAsync(CancellationToken.None).ConfigureAwait(false));
                    serviceConfigurator.WhenStopped(async host => await host.StopAsync(CancellationToken.None).ConfigureAwait(false));
                });

                // by default use a least privileged account
                hostConfigurator.RunAsNetworkService();

                // default the ServiceName, DisplayName, and Description from the entry assembly
                hostConfigurator.UseAssemblyInfoForServiceInfo();
            });

            logger.LogInformation("Program Exiting");
        }
示例#2
0
        static int Main(string[] args)
        {
            ConfigureNLog();
            NLogLogger.Use();
            NLogLogWriterFactory.Use();

            return((int)HostFactory.Run(x => x.Service <ResponderService>()));
        }
 /// <summary>
 ///   Specify that you want to use the NLog logging framework.
 /// </summary>
 /// <param name="configurator"> Optional service bus configurator </param>
 /// <param name="factory"> Required log-producing factory from NLog </param>
 public static void UseNLog(this HostConfigurator configurator, LogFactory factory)
 {
     NLogLogWriterFactory.Use(factory);
 }
 /// <summary>
 ///   Specify that you want to use the NLog logging framework.
 /// </summary>
 /// <param name="configurator"> Optional service bus configurator </param>
 public static void UseNLog(this HostConfigurator configurator)
 {
     NLogLogWriterFactory.Use();
 }