123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package stdout
- import (
- "context"
- "fmt"
- "go-common/app/service/ops/log-agent/output"
- "go-common/app/service/ops/log-agent/event"
- )
- type Stdout struct {
- c *Config
- ctx context.Context
- cancel context.CancelFunc
- i chan *event.ProcessorEvent
- }
- func init() {
- err := output.Register("stdout", NewStdout)
- if err != nil {
- panic(err)
- }
- }
- func NewStdout(ctx context.Context, config interface{}) (output.Output, error) {
- var err error
- stdout := new(Stdout)
- if c, ok := config.(*Config); !ok {
- return nil, fmt.Errorf("Error config for Lancer output")
- } else {
- if err = c.ConfigValidate(); err != nil {
- return nil, err
- }
- stdout.c = c
- }
- stdout.i = make(chan *event.ProcessorEvent)
- stdout.ctx, stdout.cancel = context.WithCancel(ctx)
- return stdout, nil
- }
- func (s *Stdout) Run() (err error) {
- go func() {
- for {
- select {
- case e := <-s.i:
- fmt.Println(string(e.Body))
- case <-s.ctx.Done():
- return
- }
- }
- }()
- if s.c.Name != "" {
- output.RegisterOutput(s.c.Name, s)
- }
- return nil
- }
- func (s *Stdout) Stop() {
- s.cancel()
- }
- func (s *Stdout) InputChan() (chan *event.ProcessorEvent) {
- return s.i
- }
|