Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions collector/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@ require (
go.opentelemetry.io/collector/confmap/provider/httpprovider v1.55.0
go.opentelemetry.io/collector/confmap/provider/httpsprovider v1.55.0
go.opentelemetry.io/collector/confmap/provider/yamlprovider v1.55.0
go.opentelemetry.io/collector/exporter/exportertest v0.149.0
go.opentelemetry.io/collector/otelcol v0.149.0
go.opentelemetry.io/collector/receiver/receivertest v0.149.0
go.opentelemetry.io/collector/service v0.149.0
go.uber.org/multierr v1.11.0
go.uber.org/zap v1.27.1
)
Expand Down Expand Up @@ -203,7 +206,6 @@ require (
go.opentelemetry.io/collector/exporter/debugexporter v0.149.0 // indirect
go.opentelemetry.io/collector/exporter/exporterhelper v0.149.0 // indirect
go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.149.0 // indirect
go.opentelemetry.io/collector/exporter/exportertest v0.149.0 // indirect
go.opentelemetry.io/collector/exporter/otlpexporter v0.149.0 // indirect
go.opentelemetry.io/collector/exporter/otlphttpexporter v0.149.0 // indirect
go.opentelemetry.io/collector/exporter/xexporter v0.149.0 // indirect
Expand Down Expand Up @@ -235,10 +237,8 @@ require (
go.opentelemetry.io/collector/receiver v1.55.0 // indirect
go.opentelemetry.io/collector/receiver/otlpreceiver v0.149.0 // indirect
go.opentelemetry.io/collector/receiver/receiverhelper v0.149.0 // indirect
go.opentelemetry.io/collector/receiver/receivertest v0.149.0 // indirect
go.opentelemetry.io/collector/receiver/xreceiver v0.149.0 // indirect
go.opentelemetry.io/collector/semconv v0.128.0 // indirect
go.opentelemetry.io/collector/service v0.149.0 // indirect
go.opentelemetry.io/collector/service/hostcapabilities v0.149.0 // indirect
go.opentelemetry.io/contrib/bridges/otelzap v0.17.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect
Expand Down
14 changes: 12 additions & 2 deletions collector/internal/collector/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,18 @@ func (c *Collector) Start(ctx context.Context) error {
Factories: func() (otelcol.Factories, error) {
return c.factories, nil
},
LoggingOptions: []zap.Option{zap.WrapCore(func(_ zapcore.Core) zapcore.Core {
return c.logger.Core()
// TODO: fully decouple extension and collector log levels so that
// OPENTELEMETRY_EXTENSION_LOG_LEVEL only affects extension logs.
LoggingOptions: []zap.Option{zap.WrapCore(func(collectorCore zapcore.Core) zapcore.Core {
extensionCore := c.logger.Core()
if zapcore.LevelOf(collectorCore) == zapcore.InfoLevel {
return extensionCore
}
increased, err := zapcore.NewIncreaseLevelCore(extensionCore, collectorCore)
if err != nil {
return extensionCore
}
return increased
})},
}
var err error
Expand Down
63 changes: 63 additions & 0 deletions collector/internal/collector/collector_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package collector

import (
"context"
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/collector/exporter/exportertest"
"go.opentelemetry.io/collector/otelcol"
"go.opentelemetry.io/collector/receiver/receivertest"
"go.opentelemetry.io/collector/service/telemetry/otelconftelemetry"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"go.uber.org/zap/zaptest/observer"
)

func TestCollectorConfigLogLevelIsOverridden(t *testing.T) {
t.Setenv("OPENTELEMETRY_COLLECTOR_CONFIG_URI", "file:testdata/config-error-level.yaml")

receivers, err := otelcol.MakeFactoryMap(receivertest.NewNopFactory())
require.NoError(t, err)
exporters, err := otelcol.MakeFactoryMap(exportertest.NewNopFactory())
require.NoError(t, err)

factories := otelcol.Factories{
Receivers: receivers,
Exporters: exporters,
Telemetry: otelconftelemetry.NewFactory(),
}

// Use a nop logger so extension logs don't end up in our observer
collector := NewCollector(zap.NewNop(), factories, "test")
// Replace collector logger with an observed core at INFO level.
collectorObservedCore, collectorLogs := observer.New(zapcore.InfoLevel)
collector.logger = zap.New(collectorObservedCore)

ctx := context.Background()
err = collector.Start(ctx)
require.NoError(t, err)

err = collector.Stop()
require.NoError(t, err)

// If the collector config log level is respected, there are no INFO logs
infoLogs := collectorLogs.FilterLevelExact(zapcore.InfoLevel).All()
assert.Empty(t, infoLogs,
"INFO logs from the collector should be suppressed when config sets level: error")
}
14 changes: 14 additions & 0 deletions collector/internal/collector/testdata/config-error-level.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
receivers:
nop:

exporters:
nop:

service:
telemetry:
logs:
level: error
pipelines:
traces:
receivers: [nop]
exporters: [nop]
Loading