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
Планировщик перестал работать при внедрении ILogger в IJob при использовании Quartz.net ⇐ C#
Место общения программистов C#
1727776542
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)
{ }
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79042609/scheduler-stopped-working-when-injecting-ilogger-in-ijob-when-using-quartz-net[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия