@@ -54,3 +54,66 @@ func TestLoggerSelectors(t *testing.T) {
5454 logs = ObserverLogs ().TakeAll ()
5555 assert .Len (t , logs , 1 )
5656}
57+
58+ func TestTypedCoreSelectors (t * testing.T ) {
59+ logSelector := "enabled-log-selector"
60+ expectedMsg := "this should be logged"
61+
62+ defaultCfg := DefaultConfig (DefaultEnvironment )
63+ eventsCfg := DefaultEventConfig (DefaultEnvironment )
64+
65+ defaultCfg .Level = DebugLevel
66+ defaultCfg .toObserver = true
67+ defaultCfg .ToStderr = false
68+ defaultCfg .ToFiles = false
69+ defaultCfg .Selectors = []string {logSelector }
70+
71+ eventsCfg .Level = defaultCfg .Level
72+ eventsCfg .toObserver = defaultCfg .toObserver
73+ eventsCfg .ToStderr = defaultCfg .ToStderr
74+ eventsCfg .ToFiles = defaultCfg .ToFiles
75+ eventsCfg .Selectors = defaultCfg .Selectors
76+
77+ ConfigureWithTypedOutput (defaultCfg , eventsCfg , "log.type" , "event" )
78+
79+ enabledSelector := NewLogger (logSelector )
80+ disabledSelector := NewLogger ("foo-selector" )
81+
82+ enabledSelector .Debugw (expectedMsg )
83+ enabledSelector .Debugw (expectedMsg , "log.type" , "event" )
84+ disabledSelector .Debug ("this should not be logged" )
85+
86+ logEntries := ObserverLogs ().TakeAll ()
87+ if len (logEntries ) != 2 {
88+ t .Errorf ("expecting 2 log entries, got %d" , len (logEntries ))
89+ t .Log ("Log entries:" )
90+ for _ , e := range logEntries {
91+ t .Log ("Message:" , e .Message , "Fields:" , e .Context )
92+ }
93+ t .FailNow ()
94+ }
95+
96+ for i , logEntry := range logEntries {
97+ msg := logEntry .Message
98+ if msg != expectedMsg {
99+ t .Fatalf ("[%d] expecting log message '%s', got '%s'" , i , expectedMsg , msg )
100+ }
101+
102+ // The second entry should also contain `log.type: event`
103+ if i == 1 {
104+ fields := logEntry .Context
105+ if len (fields ) != 1 {
106+ t .Errorf ("expecting one field, got %d" , len (fields ))
107+ }
108+
109+ k := fields [0 ].Key
110+ v := fields [0 ].String
111+ if k != "log.type" {
112+ t .Errorf ("expecting key 'log.type', got '%s'" , k )
113+ }
114+ if v != "event" {
115+ t .Errorf ("expecting value 'event', got '%s'" , v )
116+ }
117+ }
118+ }
119+ }
0 commit comments