Keep history of jobs executed for more than 1 day in Hangfire

前提是你 提交于 2019-12-07 07:05:21

问题


I've just started using Hangfire, and I am loving it.

I understand that Hangfire maintains the history for succeeded jobs for 1 day, and clear it thereafter.

Is there is a way where I can customize this default behavior and persist the history for any duration say 7 days?


回答1:


To do this, you need to create a job filter and register it through hangfire global configurations, as discussed here - https://discuss.hangfire.io/t/how-to-configure-the-retention-time-of-job/34

Create job filter -

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);
        }
    }
}

...and register in global job filters -

GlobalJobFilters.Filters.Add(new ProlongExpirationTimeAttribute());


来源:https://stackoverflow.com/questions/34450884/keep-history-of-jobs-executed-for-more-than-1-day-in-hangfire

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!