1
1
package kafka
2
2
3
3
import (
4
- "context"
5
4
"fmt"
6
5
"log/syslog"
7
6
"strings"
@@ -153,7 +152,7 @@ func (c Config) configureAuth(configMap *kafkalib.ConfigMap) error {
153
152
type ConfigOpt func (c * kafkalib.ConfigMap )
154
153
155
154
// WithLogger adds a logger to a Kafka consumer or producer.
156
- func WithLogger (ctx context. Context , log logrus.FieldLogger ) ConfigOpt {
155
+ func WithLogger (log logrus.FieldLogger ) ConfigOpt {
157
156
return func (c * kafkalib.ConfigMap ) {
158
157
159
158
syslogToLogrusLevelMapping := map [syslog.Priority ]logrus.Level {
@@ -175,27 +174,20 @@ func WithLogger(ctx context.Context, log logrus.FieldLogger) ConfigOpt {
175
174
176
175
// Read from channel and print logs using the provided logger.
177
176
go func () {
178
- defer close (logsChan )
179
- for {
180
- select {
181
- case <- ctx .Done ():
182
- return
183
- case m , ok := <- logsChan :
184
- if ! ok {
185
- return
186
- }
187
- l := log .WithFields (logrus.Fields {
188
- "kafka_context" : m .Tag ,
189
- "kafka_client" : m .Name ,
190
- }).WithTime (m .Timestamp )
191
-
192
- logrusLevel := syslogToLogrusLevelMapping [syslog .Priority (m .Level )]
193
- switch logrusLevel {
194
- case logrus .ErrorLevel :
195
- l .WithError (errors .New (m .Message )).Error ("Error in Kafka Consumer" )
196
- default :
197
- l .Log (logrusLevel , m .Message )
198
- }
177
+ // Do not close logsChan because confluent-kafka-go will send logs until we close the client.
178
+ // Otherwise it will panic trying to send messages to a closed channel.
179
+ for m := range logsChan {
180
+ l := log .WithFields (logrus.Fields {
181
+ "kafka_context" : m .Tag ,
182
+ "kafka_client" : m .Name ,
183
+ }).WithTime (m .Timestamp )
184
+
185
+ logrusLevel := syslogToLogrusLevelMapping [syslog .Priority (m .Level )]
186
+ switch logrusLevel {
187
+ case logrus .ErrorLevel :
188
+ l .WithError (errors .New (m .Message )).Error ("Error in Kafka Consumer" )
189
+ default :
190
+ l .Log (logrusLevel , m .Message )
199
191
}
200
192
}
201
193
}()
0 commit comments