Я работаю над переносом исходного кода со старой консоли dotnetframework на dotnetcore 3.1 console / workser-service.
После просмотра некоторых статей и примеров из исследования Google я все еще немного озадачен почему регистрация не работает. Итак, я приложу 2 примера ниже. Первый работает, а второй не работает. Нужно ли мне повышать разрешение или что-то, о чем я не знаю?
[Пример # 1 - Это работает]
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Hosting.WindowsServices;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.EventLog;
using System.Threading.Tasks;
namespace ABCoA.Payments.EtlManager.WorkerSvc
{
public class Program
{
public async static Task Main(string[] args)
{
var loggerFactory = LoggerFactory.Create(builder => {
builder
.AddFilter("Microsoft", LogLevel.Warning)
.AddFilter("System", LogLevel.Warning)
.AddFilter("LoggingConsoleApp.Program", LogLevel.Debug)
.AddConsole()
.AddEventLog();
});
ILogger logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation("Example log message");
}
}
}
[Пример # 2 - Это не работает]
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.EventLog;
using System.Threading.Tasks;
namespace ABCoA.Payments.EtlManager.WorkerSvc
{
public class Program
{
public async static Task Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureLogging((context, logging) => logging.AddEventLog(
new EventLogSettings()
{
SourceName = "MySource",
LogName = "MyLogName"
}
))
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<WorkerService>();
});
}
}
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Threading;
using System.Threading.Tasks;
namespace ABCoA.Payments.EtlManager.WorkerSvc
{
public class WorkerService : BackgroundService
{
private readonly ILogger<WorkerService> _logger;
public WorkerService(ILogger<WorkerService> logger)
{
_logger = logger;
}
public override async Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation($"Worker Service started at: {DateTime.Now}");
await base.StartAsync(cancellationToken);
}
public override async Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation($"Worker Service stopped at: {DateTime.Now}");
await base.StopAsync(cancellationToken);
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation($"Worker Service running at: {DateTime.Now}");
await Task.Delay(1000, stoppingToken);
}
}
}
}
"Logging": {
"IncludeScopes": "true",
"LogLevel": {
"Default": "Information",
//"System": "Information",
"Microsoft": "Warning",
//"ABCoA": "Verbose",
"Microsoft.Hosting.Lifetime": "Information"
},
"EventLog": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}