在Hangfire中保留执行工作超过1天的历史记录

时间:2015-12-24 10:00:12

标签: hangfire

我刚开始使用Hangfire,我很喜欢它。

我知道Hangfire会保留1天内成功作业的历史记录,然后再将其清除。

是否有一种方法可以自定义此默认行为并将历史记录保留为7天的任何持续时间?

1 个答案:

答案 0 :(得分:8)

为此,您需要创建一个作业过滤器并通过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());