我想要wrap / abstract日志API(隐藏实现)并使用一些库我们想要隐藏实现的原因是我们想要提供我们的日志API并隐藏在hod下使用的记录器库,现在它[logrus][1]可以当zap klog我切换到不同的记录器实现时,使用日志 api 的人也不需要更改他的日志代码用法(我们只是更改引擎...)
我所做的是创建结构并init logger返回我的结构,此外还创建包装功能的函数(见下文),
package logger
import (
"fmt"
"os"
"github.com/sirupsen/logrus"
)
const (
AppLogLevel = "APP_LOG"
defLevel = "error"
)
type Logger struct {
label string
version string
loggerImpl *logrus.Logger
}
// init logger
func NewLogger(level string,version string) *Logger {
lvl := logLevel(level)
logger := &logrus.Logger{
Out: os.Stdout,
Level: lvl,
Formatter: &logrus.TextFormatter{},
}
return &Logger{
version: version,
loggerImpl: logger,
}
}
我错过了什么吗?当我尝试将其更改为 zap 时(将结构更改为以下内容:
type Logger struct {
label string
version string
loggerImpl *zap.Logger
}
此代码不起作用(适用于 logrus 的所有函数代码)
logger.loggerImpl.SetLevel(lvl)
并且
logger.loggerImpl.Tracef(format, args...)
等等,因为zaplib 没有它们,你知道如何抽象它以在未来支持两者或更多吗?
炎炎设计
绝地无双
慕村225694
FFIVE
相关分类