Я пытался реализовать 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();
я получил вывод, как и ожидалось:
Когда я откомментирую serviceConfig.UseNLog();
, в моей консоли ничего нет, поэтому, вероятно, она не работает должным образом:
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>