@@ -29,22 +29,23 @@ import (
29
29
// builtExporter is an exporter that is built based on a config. It can have
30
30
// a trace and/or a metrics consumer and have a shutdown function.
31
31
type builtExporter struct {
32
- te component.TraceExporterBase
33
- me component.MetricsExporterBase
32
+ logger * zap.Logger
33
+ te component.TraceExporterBase
34
+ me component.MetricsExporterBase
34
35
}
35
36
36
37
// Start the exporter.
37
38
func (exp * builtExporter ) Start (ctx context.Context , host component.Host ) error {
38
39
var errors []error
39
40
if exp .te != nil {
40
- err := exp .te .Start (context . Background () , host )
41
+ err := exp .te .Start (ctx , host )
41
42
if err != nil {
42
43
errors = append (errors , err )
43
44
}
44
45
}
45
46
46
47
if exp .me != nil {
47
- err := exp .me .Start (context . Background () , host )
48
+ err := exp .me .Start (ctx , host )
48
49
if err != nil {
49
50
errors = append (errors , err )
50
51
}
@@ -54,16 +55,16 @@ func (exp *builtExporter) Start(ctx context.Context, host component.Host) error
54
55
}
55
56
56
57
// Shutdown the trace component and the metrics component of an exporter.
57
- func (exp * builtExporter ) Shutdown (context.Context ) error {
58
+ func (exp * builtExporter ) Shutdown (ctx context.Context ) error {
58
59
var errors []error
59
60
if exp .te != nil {
60
- if err := exp .te .Shutdown (context . Background () ); err != nil {
61
+ if err := exp .te .Shutdown (ctx ); err != nil {
61
62
errors = append (errors , err )
62
63
}
63
64
}
64
65
65
66
if exp .me != nil {
66
- if err := exp .me .Shutdown (context . Background () ); err != nil {
67
+ if err := exp .me .Shutdown (ctx ); err != nil {
67
68
errors = append (errors , err )
68
69
}
69
70
}
@@ -75,23 +76,23 @@ func (exp *builtExporter) Shutdown(context.Context) error {
75
76
type Exporters map [configmodels.Exporter ]* builtExporter
76
77
77
78
// StartAll starts all exporters.
78
- func (exps Exporters ) StartAll (logger * zap. Logger , host component.Host ) error {
79
- for cfg , exp := range exps {
80
- logger .Info ("Exporter is starting..." , zap . String ( "exporter" , cfg . Name ()) )
79
+ func (exps Exporters ) StartAll (ctx context. Context , host component.Host ) error {
80
+ for _ , exp := range exps {
81
+ exp . logger .Info ("Exporter is starting..." )
81
82
82
- if err := exp .Start (context . Background () , host ); err != nil {
83
+ if err := exp .Start (ctx , host ); err != nil {
83
84
return err
84
85
}
85
- logger .Info ("Exporter started." , zap . String ( "exporter" , cfg . Name ()) )
86
+ exp . logger .Info ("Exporter started." )
86
87
}
87
88
return nil
88
89
}
89
90
90
91
// ShutdownAll stops all exporters.
91
- func (exps Exporters ) ShutdownAll () error {
92
+ func (exps Exporters ) ShutdownAll (ctx context. Context ) error {
92
93
var errs []error
93
94
for _ , exp := range exps {
94
- err := exp .Shutdown (context . Background () )
95
+ err := exp .Shutdown (ctx )
95
96
if err != nil {
96
97
errs = append (errs , err )
97
98
}
@@ -127,7 +128,7 @@ func NewExportersBuilder(
127
128
config * configmodels.Config ,
128
129
factories map [string ]component.ExporterFactoryBase ,
129
130
) * ExportersBuilder {
130
- return & ExportersBuilder {logger , config , factories }
131
+ return & ExportersBuilder {logger . With ( zap . String ( kindLogKey , kindLogExporter )) , config , factories }
131
132
}
132
133
133
134
// BuildExporters exporters from config.
@@ -140,7 +141,8 @@ func (eb *ExportersBuilder) Build() (Exporters, error) {
140
141
141
142
// BuildExporters exporters based on configuration and required input data types.
142
143
for _ , cfg := range eb .config .Exporters {
143
- exp , err := eb .buildExporter (cfg , exporterInputDataTypes )
144
+ componentLogger := eb .logger .With (zap .String (typeLogKey , cfg .Type ()), zap .String (nameLogKey , cfg .Name ()))
145
+ exp , err := eb .buildExporter (componentLogger , cfg , exporterInputDataTypes )
144
146
if err != nil {
145
147
return nil , err
146
148
}
@@ -185,6 +187,7 @@ func (eb *ExportersBuilder) calcExportersRequiredDataTypes() exportersRequiredDa
185
187
}
186
188
187
189
func (eb * ExportersBuilder ) buildExporter (
190
+ logger * zap.Logger ,
188
191
config configmodels.Exporter ,
189
192
exportersInputDataTypes exportersRequiredDataTypes ,
190
193
) (* builtExporter , error ) {
@@ -193,22 +196,23 @@ func (eb *ExportersBuilder) buildExporter(
193
196
return nil , fmt .Errorf ("exporter factory not found for type: %s" , config .Type ())
194
197
}
195
198
196
- exporter := & builtExporter {}
199
+ exporter := & builtExporter {
200
+ logger : logger ,
201
+ }
197
202
198
203
inputDataTypes := exportersInputDataTypes [config ]
199
204
if inputDataTypes == nil {
200
205
// TODO https://github.com/open-telemetry/opentelemetry-collector/issues/294
201
206
// Move this validation to config/config.go:validateConfig
202
207
// No data types where requested for this exporter. This can only happen
203
208
// if there are no pipelines associated with the exporter.
204
- eb .logger .Warn ("Exporter " + config .Name () +
205
- " is not associated with any pipeline and will not export data." )
209
+ logger .Warn ("Exportee is not associated with any pipeline and will not export data." )
206
210
return exporter , nil
207
211
}
208
212
209
213
if requirement , ok := inputDataTypes [configmodels .TracesDataType ]; ok {
210
214
// Traces data type is required. Create a trace exporter based on config.
211
- te , err := createTraceExporter (factory , eb . logger , config )
215
+ te , err := createTraceExporter (factory , logger , config )
212
216
if err != nil {
213
217
if err == configerror .ErrDataTypeIsNotSupported {
214
218
// Could not create because this exporter does not support this data type.
@@ -227,7 +231,7 @@ func (eb *ExportersBuilder) buildExporter(
227
231
228
232
if requirement , ok := inputDataTypes [configmodels .MetricsDataType ]; ok {
229
233
// Metrics data type is required. Create a trace exporter based on config.
230
- me , err := createMetricsExporter (factory , eb . logger , config )
234
+ me , err := createMetricsExporter (factory , logger , config )
231
235
if err != nil {
232
236
if err == configerror .ErrDataTypeIsNotSupported {
233
237
// Could not create because this exporter does not support this data type.
0 commit comments