1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-06-18 22:17:44 +02:00

logger with helper methods (#1216)

* support unix daemon socket

* refactor(logger): logger fields changed to map[string]interface{}

* improvement(logger): adding string to Level Parser

* improvement(logger): rename ParseLevel to GetLevel

* refactor(logger): adding basic logger

adding micro default logger, and refactor logger interface

* refactor(logger): moved basic logger to top level package

* refactor(logger): adding default logger
This commit is contained in:
Sumanth Chinthagunta
2020-02-20 23:57:59 -08:00
committed by GitHub
parent 88457b812e
commit 3fa7c26946
4 changed files with 196 additions and 58 deletions

View File

@ -1,9 +1,9 @@
// Package log provides a log interface
package logger
import (
"fmt"
"sync"
var (
// Default logger
DefaultLogger Logger = NewLogger()
)
// Logger is a generic logging interface
@ -24,45 +24,32 @@ type Logger interface {
String() string
}
var (
mtx sync.Mutex
loggerMap = map[string]Logger{}
)
func Register(logger Logger) {
mtx.Lock()
defer mtx.Unlock()
loggerMap[logger.String()] = logger
func Init(opts ...Option) error {
return DefaultLogger.Init(opts...)
}
func GetLogger(name string) (Logger, error) {
l := loggerMap[name]
if l == nil {
return nil, fmt.Errorf("no such name logger found %s", name)
func Error(err error) Logger {
return DefaultLogger.Error(err)
}
func Fields(fields map[string]interface{}) Logger {
return DefaultLogger.Fields(fields)
}
func Log(level Level, v ...interface{}) {
DefaultLogger.Log(level, v...)
}
func Logf(level Level, format string, v ...interface{}) {
DefaultLogger.Logf(level, format, v...)
}
func SetGlobalLevel(lvl Level) {
if err := Init(WithLevel(lvl)); err != nil {
print(err)
}
return l, nil
}
// GetLevel converts a level string into a logger Level value.
// returns an error if the input string does not match known values.
func GetLevel(levelStr string) (Level, error) {
switch levelStr {
case TraceLevel.String():
return TraceLevel, nil
case DebugLevel.String():
return DebugLevel, nil
case InfoLevel.String():
return InfoLevel, nil
case WarnLevel.String():
return WarnLevel, nil
case ErrorLevel.String():
return ErrorLevel, nil
case FatalLevel.String():
return FatalLevel, nil
case PanicLevel.String():
return PanicLevel, nil
}
return InfoLevel, fmt.Errorf("Unknown Level String: '%s', defaulting to NoLevel", levelStr)
func String() string {
return DefaultLogger.String()
}