func New(opts ...Option) (Logger, error) {
	c := NewConfig()
	opts = append(opts, CallSkipOption(1))
	for _, opt := range opts {
		opt.apply(c)
	}
	l, err := c.conf.Build(c.getZapOptions()...)
	if err != nil {
		return nil, err
	}
	return &logger{z: l}, nil
}
New a logger
package log
import (
	"go.uber.org/zap"
	"strings"
)
type Logger interface {
	WithModule(module string) Logger
	Debug(msg string, fields ...Field)
	Info(msg string, fields ...Field)
	Error(msg string, fields ...Field)
	Fatal(msg string, fields ...Field)
	Write(p []byte) (n int, err error)
}
type logger struct {
	z *zap.Logger
}