Я работаю с новым шаблоном приложения Worker Service с .NET Core 3.0 Preview и пытаюсь добавить запись событий, используя метод AddEventLog
. Однако я не вижу ни одного из своих журналов в средстве просмотра событий в Windows.
У меня очень простая настройка приложения Worker, и я настроил запись в файл Program.cs
следующим образом:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureLogging((context, logging) =>
{
logging.AddEventLog(new EventLogSettings()
{
SourceName = "MyTestSource",
LogName = "MyTestLog"
});
})
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
У меня есть несколько операторов записи в файле Worker.cs
:
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
public override async Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation($"Worker started at: {DateTime.Now}");
await base.StartAsync(cancellationToken);
}
public override async Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation($"Worker stopped at: {DateTime.Now}");
await base.StopAsync(cancellationToken);
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation( $"Worker running at: {DateTime.Now}");
await Task.Delay(1000, stoppingToken);
}
}
Чтобы настроить журналы событий, я запустил в командной строке Powershell с повышенными правами следующее:
New-EventLog -LogName MyTestLog -Source MyTestSource
Если я открою «Просмотр событий», я вижу «MyTestLog», указанный ниже «Журналы приложений и служб».
Затем, чтобы настроить мой Worker в качестве службы Windows, я запустил следующие команды из командной строки с повышенными привилегиями:
dotnet publish -o publish
(публикует проект и выходные данные для публикации каталога)
sc create MyTestService binPath=<path to exe in publish directory>
Служба успешно создана, и я вижу ее в приложении просмотра служб. Оттуда я вручную запускаю службу, а затем снова проверяю в средстве просмотра событий, и журналы не отображаются.
Я ожидал, что там будут какие-то бревна. Однако раздел «MyTestLog» остается пустым в средстве просмотра событий.