Topshelf NLog - служба Windows (консольное приложение) не работает должным образом - PullRequest
0 голосов
/ 16 мая 2019

Я пытался реализовать Topshelf.NLog в моем проекте.

Вот что я сделал:

Пакеты Throught NuGet, которые я добавил в свой проект Topshelf.NLog.

После этого я отредактировал свой App.config и добавил:

 <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>

После этого на моем Program.cs я добавил строку:

serviceConfig.UseNLog();

Но после этой строки выше я увидел, что мое консольное приложение не работает должным образом.

Вот мой код:

class Program
    {
        static void Main(string[] args)
        {
            try
            {
                HostFactory.Run(serviceConfig =>
                {
                 //serviceConfig.UseNLog();

                serviceConfig.Service<ConverterService>(serviceInstance =>
                    {
                        serviceInstance.ConstructUsing(() => new ConverterService());
                        serviceInstance.WhenStarted(execute => execute.Start());
                        serviceInstance.WhenStopped(execute => execute.Stop());
                    });

                    serviceConfig.SetServiceName("FilesProcessor");
                    serviceConfig.SetDisplayName("Files Processor");
                    serviceConfig.SetDescription("Simple console app that works as a service.");

                    serviceConfig.StartAutomatically();
                });
            }
            catch(Exception ex)
            {

            }
        }

С комментариями //serviceConfig.UseNLog(); я получил вывод, как и ожидалось:

enter image description here

Когда я откомментирую serviceConfig.UseNLog();, в моей консоли ничего нет, поэтому, вероятно, она не работает должным образом:

enter image description here

Here is my `App.Config`:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="Products.WindowsService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      <section name="Products.BusinessLogic.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>

  <applicationSettings>


  </applicationSettings>

  <nlog>
    <targets>
      <target name="t1" type="File" fileName="C:\WhatEverServiceLogs.txt"/>
    </targets>
    <rules>
      <logger name="*" minlevel="Debug" writeTo="t1"/>
    </rules>
  </nlog>

</configuration>
...