1// Copyright (c) 2017 Uber Technologies, Inc. 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package xkit 16 17import ( 18 "fmt" 19 20 "github.com/go-kit/kit/log" 21 "github.com/go-kit/kit/log/level" 22) 23 24// LoggerOption sets a parameter for the Logger. 25type LoggerOption func(*Logger) 26 27// MessageKey sets the key for the actual log message. By default, it's "msg". 28func MessageKey(key string) LoggerOption { 29 return func(l *Logger) { l.messageKey = key } 30} 31 32// Logger wraps a go-kit logger instance in a Jaeger client compatible one. 33type Logger struct { 34 infoLogger log.Logger 35 errorLogger log.Logger 36 37 messageKey string 38} 39 40// NewLogger creates a new Jaeger client logger from a go-kit one. 41func NewLogger(kitlogger log.Logger, options ...LoggerOption) *Logger { 42 logger := &Logger{ 43 infoLogger: level.Info(kitlogger), 44 errorLogger: level.Error(kitlogger), 45 46 messageKey: "msg", 47 } 48 49 for _, option := range options { 50 option(logger) 51 } 52 53 return logger 54} 55 56// Error implements the github.com/uber/jaeger-client-go/log.Logger interface. 57func (l *Logger) Error(msg string) { 58 l.errorLogger.Log(l.messageKey, msg) 59} 60 61// Infof implements the github.com/uber/jaeger-client-go/log.Logger interface. 62func (l *Logger) Infof(msg string, args ...interface{}) { 63 l.infoLogger.Log(l.messageKey, fmt.Sprintf(msg, args...)) 64} 65