@@ -29,28 +29,19 @@ import (
2929 "go.uber.org/zap/zaptest/observer"
3030)
3131
32- func TestCollectorConfigLogLevelIsOverridden (t * testing.T ) {
32+ func TestCollectorConfigLogLevelSuppressesCollectorInfoLogs (t * testing.T ) {
3333 t .Setenv ("OPENTELEMETRY_COLLECTOR_CONFIG_URI" , "file:testdata/config-error-level.yaml" )
3434
35- receivers , err := otelcol .MakeFactoryMap (receivertest .NewNopFactory ())
36- require .NoError (t , err )
37- exporters , err := otelcol .MakeFactoryMap (exportertest .NewNopFactory ())
38- require .NoError (t , err )
39-
40- factories := otelcol.Factories {
41- Receivers : receivers ,
42- Exporters : exporters ,
43- Telemetry : otelconftelemetry .NewFactory (),
35+ collectorLogs := & observer.ObservedLogs {}
36+ collector := NewCollector (zap .NewNop (), testFactories (t ), "test" )
37+ collector .coreFunc = func (levelEnabler zapcore.LevelEnabler ) zapcore.Core {
38+ var collectorObservedCore zapcore.Core
39+ collectorObservedCore , collectorLogs = observer .New (levelEnabler )
40+ return collectorObservedCore
4441 }
4542
46- // Use a nop logger so extension logs don't end up in our observer
47- collector := NewCollector (zap .NewNop (), factories , "test" )
48- // Replace collector logger with an observed core at INFO level.
49- collectorObservedCore , collectorLogs := observer .New (zapcore .InfoLevel )
50- collector .logger = zap .New (collectorObservedCore )
51-
5243 ctx := context .Background ()
53- err = collector .Start (ctx )
44+ err : = collector .Start (ctx )
5445 require .NoError (t , err )
5546
5647 err = collector .Stop ()
@@ -61,3 +52,63 @@ func TestCollectorConfigLogLevelIsOverridden(t *testing.T) {
6152 assert .Empty (t , infoLogs ,
6253 "INFO logs from the collector should be suppressed when config sets level: error" )
6354}
55+
56+ func TestExtensionLogLevelDoesNotSuppressCollectorLogs (t * testing.T ) {
57+ t .Setenv ("OPENTELEMETRY_COLLECTOR_CONFIG_URI" , "file:testdata/config-info-level.yaml" )
58+
59+ extensionObservedCore , extensionLogs := observer .New (zapcore .ErrorLevel )
60+ collectorLogs := & observer.ObservedLogs {}
61+ collector := NewCollector (zap .New (extensionObservedCore ), testFactories (t ), "test" )
62+ collector .coreFunc = func (levelEnabler zapcore.LevelEnabler ) zapcore.Core {
63+ var collectorObservedCore zapcore.Core
64+ collectorObservedCore , collectorLogs = observer .New (levelEnabler )
65+ return collectorObservedCore
66+ }
67+
68+ ctx := context .Background ()
69+ err := collector .Start (ctx )
70+ require .NoError (t , err )
71+
72+ err = collector .Stop ()
73+ require .NoError (t , err )
74+
75+ assert .NotEmpty (t , collectorLogs .FilterLevelExact (zapcore .InfoLevel ).All (),
76+ "INFO logs from the collector should be emitted when collector config sets level: info" )
77+ assert .Empty (t , extensionLogs .All (), "collector logs should not be written through the extension logger core" )
78+ }
79+
80+ func TestCollectorLogLevelDoesNotSuppressExtensionLogs (t * testing.T ) {
81+ t .Setenv ("OPENTELEMETRY_COLLECTOR_CONFIG_URI" , "file:testdata/config-error-level.yaml" )
82+
83+ extensionObservedCore , extensionLogs := observer .New (zapcore .InfoLevel )
84+ collector := NewCollector (zap .New (extensionObservedCore ), testFactories (t ), "test" )
85+ collector .coreFunc = func (levelEnabler zapcore.LevelEnabler ) zapcore.Core {
86+ collectorObservedCore , _ := observer .New (levelEnabler )
87+ return collectorObservedCore
88+ }
89+
90+ ctx := context .Background ()
91+ err := collector .Start (ctx )
92+ require .NoError (t , err )
93+
94+ collector .logger .Info ("extension log" )
95+
96+ err = collector .Stop ()
97+ require .NoError (t , err )
98+
99+ assert .Len (t , extensionLogs .FilterMessage ("extension log" ).All (), 1 ,
100+ "extension logs should be controlled by the extension logger, not collector config" )
101+ }
102+
103+ func testFactories (t * testing.T ) otelcol.Factories {
104+ receivers , err := otelcol .MakeFactoryMap (receivertest .NewNopFactory ())
105+ require .NoError (t , err )
106+ exporters , err := otelcol .MakeFactoryMap (exportertest .NewNopFactory ())
107+ require .NoError (t , err )
108+
109+ return otelcol.Factories {
110+ Receivers : receivers ,
111+ Exporters : exporters ,
112+ Telemetry : otelconftelemetry .NewFactory (),
113+ }
114+ }
0 commit comments