I'm working with the new Worker Service app template with .NET Core 3.0 Preview and am trying to add event logging using the AddEventLog
method. However, I cannot see any of my logs via the Event Viewer in Windows.
I have a very simple Worker app setup and have configured logging in the Program.cs
file as follows:
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>();
});
I then have some logging statements in the Worker.cs
file as follows:
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);
}
}
To setup the event logs, I ran the following from an elevated Powershell prompt:
New-EventLog -LogName MyTestLog -Source MyTestSource
If I open the Event Viewer I can see "MyTestLog" listed below "Applications and Services Logs".
Then, to set up my Worker as a Windows service, I ran the following commands from an elevated command prompt:
dotnet publish -o publish
(Publishes project and outputs to publish directory)
sc create MyTestService binPath=<path to exe in publish directory>
The service is created successfully, and I can see it in the Services viewer application. From there, I manually start the service and then check back in the Event Viewer and no logs are displayed.
I was expecting there to be some logs. However, the "MyTestLog" section remains empty in the Event Viewer.