在Hangfire中保留执行的作业历史超过1天

7

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

我知道Hangfire会保留成功作业的历史记录1天,并在此之后清除。

是否有一种方法可以自定义此默认行为并将历史记录持久化保存,比如保留7天?

2个回答

15
要完成这个任务,您需要创建一个作业过滤器,并通过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());

0
从链接https://discuss.hangfire.io/t/how-to-configure-the-retention-time-of-job/34中复制,来自Yogy:
在最新版本的Hangfire中,还可以通过在UseXXXStorage(其中XXX是您使用的存储)之后使用WithJobExpirationTimeout方法,并将所需的超时作为参数传递来全局指定过期时间。
Configuration
.UseXXXStorage()
.WithJobExpirationTimeout(TimeSpan.FromDays(4))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接