github.com/argoproj/argo-events@v1.9.1/sensors/triggers/log/log.go (about) 1 package log 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "go.uber.org/zap" 9 10 "github.com/argoproj/argo-events/common/logging" 11 apicommon "github.com/argoproj/argo-events/pkg/apis/common" 12 "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1" 13 ) 14 15 type LogTrigger struct { 16 Sensor *v1alpha1.Sensor 17 Trigger *v1alpha1.Trigger 18 Logger *zap.SugaredLogger 19 LastLogTime time.Time 20 } 21 22 func NewLogTrigger(sensor *v1alpha1.Sensor, trigger *v1alpha1.Trigger, logger *zap.SugaredLogger) (*LogTrigger, error) { 23 return &LogTrigger{Sensor: sensor, Trigger: trigger, Logger: logger.With(logging.LabelTriggerType, apicommon.LogTrigger)}, nil 24 } 25 26 // GetTriggerType returns the type of the trigger 27 func (t *LogTrigger) GetTriggerType() apicommon.TriggerType { 28 return apicommon.LogTrigger 29 } 30 31 func (t *LogTrigger) FetchResource(ctx context.Context) (interface{}, error) { 32 return t.Trigger.Template.Log, nil 33 } 34 35 func (t *LogTrigger) ApplyResourceParameters(_ map[string]*v1alpha1.Event, resource interface{}) (interface{}, error) { 36 return resource, nil 37 } 38 39 func (t *LogTrigger) Execute(ctx context.Context, events map[string]*v1alpha1.Event, resource interface{}) (interface{}, error) { 40 log, ok := resource.(*v1alpha1.LogTrigger) 41 if !ok { 42 return nil, fmt.Errorf("failed to interpret the fetched trigger resource") 43 } 44 if t.shouldLog(log) { 45 for dependencyName, event := range events { 46 t.Logger.Infow( 47 event.DataString(), 48 zap.String("dependencyName", dependencyName), 49 zap.Any("eventContext", event.Context), 50 ) 51 } 52 t.LastLogTime = time.Now() 53 } 54 return nil, nil 55 } 56 57 func (t *LogTrigger) shouldLog(log *v1alpha1.LogTrigger) bool { 58 return time.Now().After(t.LastLogTime.Add(log.GetInterval())) 59 } 60 61 func (t *LogTrigger) ApplyPolicy(context.Context, interface{}) error { 62 return nil 63 }