WithMetrics returns a new JobDescriptor that will report metrics.
(metrics *CronJobMetrics)
| 33 | |
| 34 | // WithMetrics returns a new JobDescriptor that will report metrics. |
| 35 | func WithMetrics(metrics *CronJobMetrics) JobOption { |
| 36 | return func(descriptor *JobDescriptor) { |
| 37 | innerRun := descriptor.Run |
| 38 | descriptor.Run = func(ctx context.Context) error { |
| 39 | start := time.Now() |
| 40 | m := metrics.Job(descriptor.Name).Schedule(descriptor.RawSpec) |
| 41 | defer m.Observe(time.Since(start)) |
| 42 | err := innerRun(ctx) |
| 43 | if err != nil { |
| 44 | m.Fail() |
| 45 | return err |
| 46 | } |
| 47 | return nil |
| 48 | } |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | // WithLogging returns a new Universal job that will log. |
| 53 | func WithLogging(logger log.Logger) JobOption { |