Merge pull request 'fix:解决定时任务监听到异常时,且配置不发送邮件,本地Log能记录到异常信息' (#216) from myhuangye/Admin.NET.Pro:v2 into v2
Reviewed-on: http://101.43.53.74:3000/Admin.NET/Admin.NET.Pro/pulls/216
This commit is contained in:
commit
5d48eebc2c
@ -13,12 +13,14 @@ public class JobMonitor : IJobMonitor
|
|||||||
{
|
{
|
||||||
private readonly IEventPublisher _eventPublisher;
|
private readonly IEventPublisher _eventPublisher;
|
||||||
private readonly SysConfigService _sysConfigService;
|
private readonly SysConfigService _sysConfigService;
|
||||||
|
private readonly ILogger<JobMonitor> _logger;
|
||||||
|
|
||||||
public JobMonitor(IServiceScopeFactory scopeFactory)
|
public JobMonitor(IServiceScopeFactory scopeFactory)
|
||||||
{
|
{
|
||||||
var serviceScope = scopeFactory.CreateScope();
|
var serviceScope = scopeFactory.CreateScope();
|
||||||
_sysConfigService = serviceScope.ServiceProvider.GetRequiredService<SysConfigService>();
|
_sysConfigService = serviceScope.ServiceProvider.GetRequiredService<SysConfigService>();
|
||||||
_eventPublisher = serviceScope.ServiceProvider.GetRequiredService<IEventPublisher>(); ;
|
_eventPublisher = serviceScope.ServiceProvider.GetRequiredService<IEventPublisher>();
|
||||||
|
_logger = serviceScope.ServiceProvider.GetRequiredService<ILogger<JobMonitor>>(); ;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task OnExecutingAsync(JobExecutingContext context, CancellationToken stoppingToken)
|
public Task OnExecutingAsync(JobExecutingContext context, CancellationToken stoppingToken)
|
||||||
@ -28,11 +30,19 @@ public class JobMonitor : IJobMonitor
|
|||||||
|
|
||||||
public async Task OnExecutedAsync(JobExecutedContext context, CancellationToken stoppingToken)
|
public async Task OnExecutedAsync(JobExecutedContext context, CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
// 将异常作业发送到邮件
|
if (context.Exception != null)
|
||||||
if (await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysErrorMail) && context.Exception != null)
|
|
||||||
{
|
{
|
||||||
var errorInfo = $"【{context.Trigger.Description}】定时任务错误:{context.Exception}";
|
var errorInfo = $"【{context.Trigger.Description}】定时任务错误:{context.Exception}";
|
||||||
await _eventPublisher.PublishAsync(CommonConst.SendErrorMail, errorInfo, stoppingToken);
|
if (await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysErrorMail))
|
||||||
|
{
|
||||||
|
// 将异常作业发送到邮件
|
||||||
|
await _eventPublisher.PublishAsync(CommonConst.SendErrorMail, errorInfo, stoppingToken);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//将异常信息存储本地记录
|
||||||
|
_logger.LogError(errorInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -80,6 +80,12 @@ public class Startup : AppStartup
|
|||||||
{
|
{
|
||||||
options.AddPersistence<DbJobPersistence>(); // 添加作业持久化器
|
options.AddPersistence<DbJobPersistence>(); // 添加作业持久化器
|
||||||
options.AddMonitor<JobMonitor>(); // 添加作业执行监视器
|
options.AddMonitor<JobMonitor>(); // 添加作业执行监视器
|
||||||
|
// 定义未捕获的异常,通常是 Task 异常
|
||||||
|
options.UnobservedTaskExceptionHandler = (obj, args) =>
|
||||||
|
{
|
||||||
|
if (args.Exception?.Message != null)
|
||||||
|
Log.Error($"JobSchedule 有未处理异常 :{args.Exception?.Message} ", args.Exception);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// 脱敏检测
|
// 脱敏检测
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user