Хранить историю заданий, выполненных более 1 дня в Hangfire

Я только начал использовать Hangfire, и мне это нравится.

Я понимаю, что Hangfire сохраняет историю успешно выполненных заданий в течение 1 дня, а затем очищает ее.

Есть ли способ настроить это поведение по умолчанию и сохранить историю на любой срок, скажем, 7 дней?


person Yogi    schedule 24.12.2015    source источник


Ответы (1)


Для этого вам необходимо создать фильтр заданий и зарегистрировать его через глобальные конфигурации Hangfire, как описано здесь — https://discuss.hangfire.io/t/how-to-configure-the-retention-время-работы/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());
person Yogi    schedule 05.01.2016