Планировщик перестал работать при внедрении ILogger в IJob при использовании Quartz.netC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Планировщик перестал работать при внедрении ILogger в IJob при использовании Quartz.net

Сообщение Anonymous »

Program.cs
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
IConfiguration configuration = hostContext.Configuration;
AppSettings.Init(configuration.GetSection("AppSettings"));

ConfigureLogger().Wait();

services.AddHostedService();
})
.UseWindowsService()
.Build();

host.Run();

async Task ConfigureLogger()
{
// Set up Application Insights TelemetryConfiguration
string appInsightsCS = await ApiHelper.GetAppInsightsConnectionString();
if (!String.IsNullOrEmpty(appInsightsCS))
{
TelemetryConfiguration telemetryConfiguration = TelemetryConfiguration.CreateDefault();
telemetryConfiguration.ConnectionString = appInsightsCS;

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.Enrich.FromLogContext()
.Enrich.WithProperty("ApplicationName", "Extractor")
.Enrich.WithProperty("Practice Id", AppSettings.Instance.PracticeId)
.Enrich.WithProperty("Practice Name", AppSettings.Instance.PracticeName)
.Enrich.WithProperty("PmsType", AppSettings.Instance.PmsType)
.WriteTo.ApplicationInsights(telemetryConfiguration, TelemetryConverter.Traces)
.CreateLogger();
}
else
{
Console.WriteLine("Appplication Inssights connection not found");
}
}

Worker.cs
public class Worker : BackgroundService
{
private readonly ILogger _logger;

public Worker(ILogger logger)
{
_logger = logger;
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
await new MyScheduler().Initiate();
}
}

MyScheduler
public class MyScheduler
{

public async Task Initiate()
{
try
{
ScheduleInformation scheduleInfo = await ApiHelper.LoadScheduleInfo();

if(scheduleInfo != null)
{
SharedDataService.PracticeConfigs = scheduleInfo.PracticeConfigs;

await ScheduleJob(scheduleInfo);
}
}
}
}

public async Task ScheduleJob(ScheduleInformation scheduleInfo)
{
// Create a scheduler
IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();

// Define a job
IJobDetail job = JobBuilder.Create()
.WithIdentity($"Schedule-{scheduleInfo.Id}", $"JobGroup{scheduleInfo.Id}")
.Build();

//set job parameters
job.JobDataMap.Put("JobParams", scheduleInfo);

// Define a trigger with the retrieved cron expression
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity($"ScheduleTrigger-{scheduleInfo.Id}", $"TriggerGroup{scheduleInfo.Id}")
.StartNow()
.WithCronSchedule(scheduleInfo.CronExpression)
.Build();

Log.Information($"Schedule started. Id = {scheduleInfo.Id}");

// Schedule the job with the trigger
await scheduler.ScheduleJob(job, trigger);

await scheduler.Start();
}

ExtractionJob
Здесь, когда я внедрил ILogger, то после того, как он перестал работать.
public class ExtractionJob : IJob
{
readonly AzureHelper _azureHelper;
readonly ILogger _logger;

public ExtractionJob(ILogger logger)
{
_azureHelper = new AzureHelper();
_logger = logger;
}

public async Task Execute(IJobExecutionContext context)
{ }
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... quartz-net
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»