在 Hangfire 中保留执行超过 1 天的作业历史记录
Keep history of jobs executed for more than 1 day in Hangfire
我刚开始使用 Hangfire,我很喜欢它。
我了解 Hangfire 会保留成功作业的历史记录 1 天,然后清除它。
有没有一种方法可以让我自定义此默认行为并将历史记录保留任何持续时间(比如 7 天)?
为此,您需要创建一个作业过滤器并通过 hangfire 全局配置注册它,如此处讨论 -
https://discuss.hangfire.io/t/how-to-configure-the-retention-time-of-job/34
创建工作过滤器 -
using Hangfire.Common;
using Hangfire.States;
using Hangfire.Storage;
using System;
namespace HangfireDemo
{
public class ProlongExpirationTimeAttribute : JobFilterAttribute, IApplyStateFilter
{
public void OnStateApplied(ApplyStateContext filterContext, IWriteOnlyTransaction transaction)
{
filterContext.JobExpirationTimeout = TimeSpan.FromDays(7);
}
public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
{
context.JobExpirationTimeout = TimeSpan.FromDays(7);
}
}
}
...并在全球职位筛选器中注册 -
GlobalJobFilters.Filters.Add(new ProlongExpirationTimeAttribute());
我刚开始使用 Hangfire,我很喜欢它。
我了解 Hangfire 会保留成功作业的历史记录 1 天,然后清除它。
有没有一种方法可以让我自定义此默认行为并将历史记录保留任何持续时间(比如 7 天)?
为此,您需要创建一个作业过滤器并通过 hangfire 全局配置注册它,如此处讨论 - https://discuss.hangfire.io/t/how-to-configure-the-retention-time-of-job/34
创建工作过滤器 -
using Hangfire.Common;
using Hangfire.States;
using Hangfire.Storage;
using System;
namespace HangfireDemo
{
public class ProlongExpirationTimeAttribute : JobFilterAttribute, IApplyStateFilter
{
public void OnStateApplied(ApplyStateContext filterContext, IWriteOnlyTransaction transaction)
{
filterContext.JobExpirationTimeout = TimeSpan.FromDays(7);
}
public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
{
context.JobExpirationTimeout = TimeSpan.FromDays(7);
}
}
}
...并在全球职位筛选器中注册 -
GlobalJobFilters.Filters.Add(new ProlongExpirationTimeAttribute());