From 53552c756e62593c41492cba093708519539a8e2 Mon Sep 17 00:00:00 2001 From: Dan Jaglowski Date: Mon, 1 Apr 2024 15:58:46 -0500 Subject: [PATCH] [chore][pkg/stanza] Cleanup output operator files --- .../output/drop/{drop.go => config.go} | 19 ++--- pkg/stanza/operator/output/drop/output.go | 21 ++++++ .../drop/{drop_test.go => output_test.go} | 0 .../output/file/{file.go => config.go} | 66 ++--------------- pkg/stanza/operator/output/file/output.go | 71 +++++++++++++++++++ .../output/stdout/{stdout.go => config.go} | 29 ++------ pkg/stanza/operator/output/stdout/output.go | 33 +++++++++ .../stdout/{stdout_test.go => output_test.go} | 0 8 files changed, 137 insertions(+), 102 deletions(-) rename pkg/stanza/operator/output/drop/{drop.go => config.go} (66%) create mode 100644 pkg/stanza/operator/output/drop/output.go rename pkg/stanza/operator/output/drop/{drop_test.go => output_test.go} (100%) rename pkg/stanza/operator/output/file/{file.go => config.go} (50%) create mode 100644 pkg/stanza/operator/output/file/output.go rename pkg/stanza/operator/output/stdout/{stdout.go => config.go} (62%) create mode 100644 pkg/stanza/operator/output/stdout/output.go rename pkg/stanza/operator/output/stdout/{stdout_test.go => output_test.go} (100%) diff --git a/pkg/stanza/operator/output/drop/drop.go b/pkg/stanza/operator/output/drop/config.go similarity index 66% rename from pkg/stanza/operator/output/drop/drop.go rename to pkg/stanza/operator/output/drop/config.go index 7dcf869bde07..c1878784a96a 100644 --- a/pkg/stanza/operator/output/drop/drop.go +++ b/pkg/stanza/operator/output/drop/config.go @@ -4,23 +4,22 @@ package drop // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/output/drop" import ( - "context" - "go.uber.org/zap" - "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/entry" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper" ) +const operatorType = "drop_output" + func init() { - operator.Register("drop_output", func() operator.Builder { return NewConfig("") }) + operator.Register(operatorType, func() operator.Builder { return NewConfig("") }) } // NewConfig creates a new drop output config with default values func NewConfig(operatorID string) *Config { return &Config{ - OutputConfig: helper.NewOutputConfig(operatorID, "drop_output"), + OutputConfig: helper.NewOutputConfig(operatorID, operatorType), } } @@ -40,13 +39,3 @@ func (c Config) Build(logger *zap.SugaredLogger) (operator.Operator, error) { OutputOperator: outputOperator, }, nil } - -// Output is an operator that consumes and ignores incoming entries. -type Output struct { - helper.OutputOperator -} - -// Process will drop the incoming entry. -func (p *Output) Process(_ context.Context, _ *entry.Entry) error { - return nil -} diff --git a/pkg/stanza/operator/output/drop/output.go b/pkg/stanza/operator/output/drop/output.go new file mode 100644 index 000000000000..c808359a99d3 --- /dev/null +++ b/pkg/stanza/operator/output/drop/output.go @@ -0,0 +1,21 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package drop // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/output/drop" + +import ( + "context" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/entry" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper" +) + +// Output is an operator that consumes and ignores incoming entries. +type Output struct { + helper.OutputOperator +} + +// Process will drop the incoming entry. +func (o *Output) Process(_ context.Context, _ *entry.Entry) error { + return nil +} diff --git a/pkg/stanza/operator/output/drop/drop_test.go b/pkg/stanza/operator/output/drop/output_test.go similarity index 100% rename from pkg/stanza/operator/output/drop/drop_test.go rename to pkg/stanza/operator/output/drop/output_test.go diff --git a/pkg/stanza/operator/output/file/file.go b/pkg/stanza/operator/output/file/config.go similarity index 50% rename from pkg/stanza/operator/output/file/file.go rename to pkg/stanza/operator/output/file/config.go index 7bd676446627..17e97f44a036 100644 --- a/pkg/stanza/operator/output/file/file.go +++ b/pkg/stanza/operator/output/file/config.go @@ -4,28 +4,25 @@ package file // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/output/file" import ( - "context" - "encoding/json" "fmt" "html/template" - "os" - "sync" "go.uber.org/zap" - "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/entry" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper" ) +const operatorType = "file_output" + func init() { - operator.Register("file_output", func() operator.Builder { return NewConfig("") }) + operator.Register(operatorType, func() operator.Builder { return NewConfig("") }) } // NewConfig creates a new file output config with default values func NewConfig(operatorID string) *Config { return &Config{ - OutputConfig: helper.NewOutputConfig(operatorID, "file_output"), + OutputConfig: helper.NewOutputConfig(operatorID, operatorType), } } @@ -62,58 +59,3 @@ func (c Config) Build(logger *zap.SugaredLogger) (operator.Operator, error) { tmpl: tmpl, }, nil } - -// Output is an operator that writes logs to a file. -type Output struct { - helper.OutputOperator - - path string - tmpl *template.Template - encoder *json.Encoder - file *os.File - mux sync.Mutex -} - -// Start will open the output file. -func (fo *Output) Start(_ operator.Persister) error { - var err error - fo.file, err = os.OpenFile(fo.path, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0600) - if err != nil { - return err - } - - fo.encoder = json.NewEncoder(fo.file) - fo.encoder.SetEscapeHTML(false) - - return nil -} - -// Stop will close the output file. -func (fo *Output) Stop() error { - if fo.file != nil { - if err := fo.file.Close(); err != nil { - fo.Errorf(err.Error()) - } - } - return nil -} - -// Process will write an entry to the output file. -func (fo *Output) Process(_ context.Context, entry *entry.Entry) error { - fo.mux.Lock() - defer fo.mux.Unlock() - - if fo.tmpl != nil { - err := fo.tmpl.Execute(fo.file, entry) - if err != nil { - return err - } - } else { - err := fo.encoder.Encode(entry) - if err != nil { - return err - } - } - - return nil -} diff --git a/pkg/stanza/operator/output/file/output.go b/pkg/stanza/operator/output/file/output.go new file mode 100644 index 000000000000..e84544b468a4 --- /dev/null +++ b/pkg/stanza/operator/output/file/output.go @@ -0,0 +1,71 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package file // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/output/file" + +import ( + "context" + "encoding/json" + "html/template" + "os" + "sync" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/entry" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper" +) + +// Output is an operator that writes logs to a file. +type Output struct { + helper.OutputOperator + + path string + tmpl *template.Template + encoder *json.Encoder + file *os.File + mux sync.Mutex +} + +// Start will open the output file. +func (o *Output) Start(_ operator.Persister) error { + var err error + o.file, err = os.OpenFile(o.path, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0600) + if err != nil { + return err + } + + o.encoder = json.NewEncoder(o.file) + o.encoder.SetEscapeHTML(false) + + return nil +} + +// Stop will close the output file. +func (o *Output) Stop() error { + if o.file != nil { + if err := o.file.Close(); err != nil { + o.Errorf(err.Error()) + } + } + return nil +} + +// Process will write an entry to the output file. +func (o *Output) Process(_ context.Context, entry *entry.Entry) error { + o.mux.Lock() + defer o.mux.Unlock() + + if o.tmpl != nil { + err := o.tmpl.Execute(o.file, entry) + if err != nil { + return err + } + } else { + err := o.encoder.Encode(entry) + if err != nil { + return err + } + } + + return nil +} diff --git a/pkg/stanza/operator/output/stdout/stdout.go b/pkg/stanza/operator/output/stdout/config.go similarity index 62% rename from pkg/stanza/operator/output/stdout/stdout.go rename to pkg/stanza/operator/output/stdout/config.go index e892c7485c01..a3e361c8c92f 100644 --- a/pkg/stanza/operator/output/stdout/stdout.go +++ b/pkg/stanza/operator/output/stdout/config.go @@ -4,30 +4,29 @@ package stdout // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/output/stdout" import ( - "context" "encoding/json" "io" "os" - "sync" "go.uber.org/zap" - "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/entry" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper" ) +const operatorType = "stdout" + // Stdout is a global handle to standard output var Stdout io.Writer = os.Stdout func init() { - operator.Register("stdout", func() operator.Builder { return NewConfig("") }) + operator.Register(operatorType, func() operator.Builder { return NewConfig("") }) } // NewConfig creates a new stdout config with default values func NewConfig(operatorID string) *Config { return &Config{ - OutputConfig: helper.NewOutputConfig(operatorID, "stdout"), + OutputConfig: helper.NewOutputConfig(operatorID, operatorType), } } @@ -48,23 +47,3 @@ func (c Config) Build(logger *zap.SugaredLogger) (operator.Operator, error) { encoder: json.NewEncoder(Stdout), }, nil } - -// Output is an operator that logs entries using stdout. -type Output struct { - helper.OutputOperator - encoder *json.Encoder - mux sync.Mutex -} - -// Process will log entries received. -func (o *Output) Process(_ context.Context, entry *entry.Entry) error { - o.mux.Lock() - err := o.encoder.Encode(entry) - if err != nil { - o.mux.Unlock() - o.Errorf("Failed to process entry: %s", err) - return err - } - o.mux.Unlock() - return nil -} diff --git a/pkg/stanza/operator/output/stdout/output.go b/pkg/stanza/operator/output/stdout/output.go new file mode 100644 index 000000000000..4107441049e5 --- /dev/null +++ b/pkg/stanza/operator/output/stdout/output.go @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package stdout // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/output/stdout" + +import ( + "context" + "encoding/json" + "sync" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/entry" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper" +) + +// Output is an operator that logs entries using stdout. +type Output struct { + helper.OutputOperator + encoder *json.Encoder + mux sync.Mutex +} + +// Process will log entries received. +func (o *Output) Process(_ context.Context, entry *entry.Entry) error { + o.mux.Lock() + err := o.encoder.Encode(entry) + if err != nil { + o.mux.Unlock() + o.Errorf("Failed to process entry: %s", err) + return err + } + o.mux.Unlock() + return nil +} diff --git a/pkg/stanza/operator/output/stdout/stdout_test.go b/pkg/stanza/operator/output/stdout/output_test.go similarity index 100% rename from pkg/stanza/operator/output/stdout/stdout_test.go rename to pkg/stanza/operator/output/stdout/output_test.go