70 lines
1.3 KiB
Go
70 lines
1.3 KiB
Go
package analytics
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"sync"
|
|
|
|
"github.com/golangci/golangci-shared/pkg/runmode"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var initLogrusOnce sync.Once
|
|
var logLevel = logrus.InfoLevel
|
|
|
|
func initLogrus() {
|
|
level := logLevel
|
|
if runmode.IsDebug() {
|
|
level = logrus.DebugLevel
|
|
}
|
|
logrus.SetLevel(level)
|
|
}
|
|
|
|
func SetLogLevel(level logrus.Level) {
|
|
logLevel = level
|
|
logrus.SetLevel(logLevel)
|
|
}
|
|
|
|
type Logger interface {
|
|
Warnf(format string, args ...interface{})
|
|
Errorf(format string, args ...interface{})
|
|
Infof(format string, args ...interface{})
|
|
Debugf(format string, args ...interface{})
|
|
}
|
|
|
|
type logger struct {
|
|
ctx context.Context
|
|
}
|
|
|
|
func (log logger) le() *logrus.Entry {
|
|
return logrus.WithFields(getTrackingProps(log.ctx))
|
|
}
|
|
|
|
func (log logger) Warnf(format string, args ...interface{}) {
|
|
err := fmt.Errorf(format, args...)
|
|
log.le().Warn(err.Error())
|
|
trackError(log.ctx, err, "WARN")
|
|
}
|
|
|
|
func (log logger) Errorf(format string, args ...interface{}) {
|
|
err := fmt.Errorf(format, args...)
|
|
log.le().Error(err.Error())
|
|
trackError(log.ctx, err, "ERROR")
|
|
}
|
|
|
|
func (log logger) Infof(format string, args ...interface{}) {
|
|
log.le().Infof(format, args...)
|
|
}
|
|
|
|
func (log logger) Debugf(format string, args ...interface{}) {
|
|
log.le().Debugf(format, args...)
|
|
}
|
|
|
|
func Log(ctx context.Context) Logger {
|
|
initLogrusOnce.Do(initLogrus)
|
|
|
|
return logger{
|
|
ctx: ctx,
|
|
}
|
|
}
|