LogJob.cs 1.4 KB

1234567891011121314151617181920212223242526272829
  1. namespace Admin.NET.Core;
  2. /// <summary>
  3. /// 清理日志作业任务
  4. /// </summary>
  5. [JobDetail("job_log", Description = "清理操作日志", GroupName = "default", Concurrent = false)]
  6. [Daily(TriggerId = "trigger_log", Description = "清理操作日志")]
  7. public class LogJob : IJob
  8. {
  9. private readonly IServiceProvider _serviceProvider;
  10. public LogJob(IServiceProvider serviceProvider)
  11. {
  12. _serviceProvider = serviceProvider;
  13. }
  14. public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
  15. {
  16. using var serviceScope = _serviceProvider.CreateScope();
  17. var logVisRep = serviceScope.ServiceProvider.GetService<SqlSugarRepository<SysLogVis>>();
  18. var logOpRep = serviceScope.ServiceProvider.GetService<SqlSugarRepository<SysLogOp>>();
  19. var logDiffRep = serviceScope.ServiceProvider.GetService<SqlSugarRepository<SysLogDiff>>();
  20. var daysAgo = 30; // 删除30天以前
  21. await logVisRep.AsDeleteable().Where(u => (DateTime)u.CreateTime < DateTime.Now.AddDays(-daysAgo)).ExecuteCommandAsync(stoppingToken); // 删除访问日志
  22. await logOpRep.AsDeleteable().Where(u => (DateTime)u.CreateTime < DateTime.Now.AddDays(-daysAgo)).ExecuteCommandAsync(stoppingToken); // 删除操作日志
  23. await logDiffRep.AsDeleteable().Where(u => (DateTime)u.CreateTime < DateTime.Now.AddDays(-daysAgo)).ExecuteCommandAsync(stoppingToken); // 删除差异日志
  24. }
  25. }