mirror of
https://github.com/linka-cloud/grpc.git
synced 2025-06-22 01:02:29 +00:00
service and client implements last grpc server and client interfaces, improved errors, add signals handling
This commit is contained in:
45
logger/context.go
Normal file
45
logger/context.go
Normal file
@ -0,0 +1,45 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var (
|
||||
defaultLogger Logger
|
||||
mu sync.RWMutex
|
||||
)
|
||||
|
||||
type log struct{}
|
||||
|
||||
func init() {
|
||||
defaultLogger = &logger{FieldLogger: logrus.New()}
|
||||
}
|
||||
|
||||
func SetDefault(logger Logger) {
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
defaultLogger = logger
|
||||
}
|
||||
|
||||
func Set(ctx context.Context, logger Logger) context.Context {
|
||||
return context.WithValue(ctx, log{}, logger)
|
||||
}
|
||||
|
||||
func From(ctx context.Context) Logger {
|
||||
log, ok := ctx.Value(log{}).(Logger)
|
||||
if ok {
|
||||
return log
|
||||
}
|
||||
if defaultLogger != nil {
|
||||
return defaultLogger
|
||||
}
|
||||
logr := New()
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
defaultLogger = logr
|
||||
return defaultLogger
|
||||
}
|
||||
|
65
logger/logger.go
Normal file
65
logger/logger.go
Normal file
@ -0,0 +1,65 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var (
|
||||
StandardLogger Logger = &logger{FieldLogger: logrus.StandardLogger()}
|
||||
)
|
||||
|
||||
func New() Logger {
|
||||
return &logger{FieldLogger: logrus.New()}
|
||||
}
|
||||
|
||||
type Logger interface {
|
||||
WithField(key string, value interface{}) Logger
|
||||
WithFields(kv ...string) Logger
|
||||
WithError(err error) Logger
|
||||
|
||||
Debugf(format string, args ...interface{})
|
||||
Infof(format string, args ...interface{})
|
||||
Printf(format string, args ...interface{})
|
||||
Warnf(format string, args ...interface{})
|
||||
Warningf(format string, args ...interface{})
|
||||
Errorf(format string, args ...interface{})
|
||||
Fatalf(format string, args ...interface{})
|
||||
Panicf(format string, args ...interface{})
|
||||
|
||||
Debug(args ...interface{})
|
||||
Info(args ...interface{})
|
||||
Print(args ...interface{})
|
||||
Warn(args ...interface{})
|
||||
Warning(args ...interface{})
|
||||
Error(args ...interface{})
|
||||
Fatal(args ...interface{})
|
||||
Panic(args ...interface{})
|
||||
|
||||
Debugln(args ...interface{})
|
||||
Infoln(args ...interface{})
|
||||
Println(args ...interface{})
|
||||
Warnln(args ...interface{})
|
||||
Warningln(args ...interface{})
|
||||
Errorln(args ...interface{})
|
||||
Fatalln(args ...interface{})
|
||||
Panicln(args ...interface{})
|
||||
}
|
||||
|
||||
type logger struct {
|
||||
logrus.FieldLogger
|
||||
}
|
||||
|
||||
func (l *logger) WithField(key string, value interface{}) Logger {
|
||||
return &logger{FieldLogger: l.FieldLogger.WithField(key, value)}
|
||||
}
|
||||
|
||||
func (l *logger) WithFields(kv ...string) Logger {
|
||||
for i := 0; i < len(kv); i+=2 {
|
||||
l.FieldLogger = l.FieldLogger.WithField(kv[i], kv[i+1])
|
||||
}
|
||||
return l
|
||||
}
|
||||
|
||||
func (l *logger) WithError(err error) Logger {
|
||||
return &logger{FieldLogger: l.FieldLogger.WithError(err)}
|
||||
}
|
Reference in New Issue
Block a user