( transformChan chan pipeline.Event, output chan pipeline.Event, acquisTomb *tomb.Tomb, transformRuntime *vm.Program, logger *log.Entry, )
| 456 | } |
| 457 | |
| 458 | func transform( |
| 459 | transformChan chan pipeline.Event, |
| 460 | output chan pipeline.Event, |
| 461 | acquisTomb *tomb.Tomb, |
| 462 | transformRuntime *vm.Program, |
| 463 | logger *log.Entry, |
| 464 | ) { |
| 465 | logger.Info("transformer started") |
| 466 | |
| 467 | for { |
| 468 | select { |
| 469 | case <-acquisTomb.Dying(): |
| 470 | logger.Debugf("transformer is dying") |
| 471 | return |
| 472 | case evt := <-transformChan: |
| 473 | logger.Tracef("Received event %s", evt.Line.Raw) |
| 474 | |
| 475 | out, err := expr.Run(transformRuntime, map[string]any{"evt": &evt}) |
| 476 | if err != nil { |
| 477 | logger.Errorf("while running transform expression: %s, sending event as-is", err) |
| 478 | output <- evt |
| 479 | continue |
| 480 | } |
| 481 | |
| 482 | if out == nil { |
| 483 | logger.Errorf("transform expression returned nil, sending event as-is") |
| 484 | output <- evt |
| 485 | continue |
| 486 | } |
| 487 | |
| 488 | switch v := out.(type) { |
| 489 | case string: |
| 490 | logger.Tracef("transform expression returned %s", v) |
| 491 | output <- copyEvent(evt, v) |
| 492 | case []any: |
| 493 | logger.Tracef("transform expression returned %v", v) // We actually want to log the slice content |
| 494 | |
| 495 | for _, line := range v { |
| 496 | l, ok := line.(string) |
| 497 | if !ok { |
| 498 | logger.Errorf("transform expression returned []interface{}, but cannot assert an element to string") |
| 499 | output <- evt |
| 500 | |
| 501 | continue |
| 502 | } |
| 503 | |
| 504 | output <- copyEvent(evt, l) |
| 505 | } |
| 506 | case []string: |
| 507 | logger.Tracef("transform expression returned %v", v) |
| 508 | |
| 509 | for _, line := range v { |
| 510 | output <- copyEvent(evt, line) |
| 511 | } |
| 512 | default: |
| 513 | logger.Errorf("transform expression returned an invalid type %T, sending event as-is", out) |
| 514 | output <- evt |
| 515 | } |
no test coverage detected
searching dependent graphs…