diff --git a/.gitignore b/.gitignore index 757fee31c9045c1426c81fd153959ad2ac9c4109..6b076b358e4aeed6d68257ec5e4b0d47a91513c8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/.idea \ No newline at end of file +/.idea +runtime diff --git a/examples/log/run_default.go b/examples/log/run_default.go new file mode 100644 index 0000000000000000000000000000000000000000..e78ff641e42b299cb955475730d8e5b69afb3eac --- /dev/null +++ b/examples/log/run_default.go @@ -0,0 +1,46 @@ +package main + +import ( + "fmt" + v1http "gitee.com/scottq/go-framework/src/v1/httpserver" + v1log "gitee.com/scottq/go-framework/src/v1/log" + "os" + "path/filepath" + "time" +) + +func TestLog(logger v1log.ILog) { + logger.Info("this is INFO") + logger.Debug("this is DEBUG") + logger.Warn("this is WARN") + logger.Error("this is ERROR") + logger.Fatal("this is FATAL") +} + +func main() { + c := &v1log.MyLoggerConfig{ + Module: "example", + Path: fmt.Sprintf("../runtime/logs/%s.log", filepath.Base(os.Args[0])), + ConsoleOut: true, + } + logger := v1log.NewDefaultLogger(c) + logger.Info("hello world") + TestLog(logger) + + + + // + httpServer, err := v1http.NewHttpServer("exampleHttpServer", ":8080") + if err != nil { + logger.Error("run http server error:%s" + err.Error()) + panic(err) + } + httpServer.AddLogger(logger) + + go func() { + time.Sleep(time.Second * 5) + httpServer.Stop() + }() + + httpServer.Run() +} diff --git a/examples/log/run_zap.go b/examples/log/run_zap.go new file mode 100644 index 0000000000000000000000000000000000000000..8ca8ce369160d26c24e067f90f76aefd9862e5a6 --- /dev/null +++ b/examples/log/run_zap.go @@ -0,0 +1,25 @@ +package main + +import ( + "fmt" + v1log "gitee.com/scottq/go-framework/src/v1/log" + "os" + "path/filepath" +) + +func TestLog(logger v1log.ILog){ + logger.Info("this is INFO") + logger.Debug("this is DEBUG") + logger.Warn("this is WARN") + logger.Error("this is ERROR") + logger.Fatal("this is FATAL") +} + +func main() { + logPath := fmt.Sprintf("../runtime/logs/%s.log", filepath.Base(os.Args[0])) + + //log + logger := v1log.NewZapLog("exampleApp", logPath, nil) + + TestLog(logger) +} diff --git a/examples/run_job.go b/examples/run_job.go index 467dd6f0e60073bda227120a4207b26bd29ae27e..505781ade0f1ce73ee550e88bc298362f83efadf 100644 --- a/examples/run_job.go +++ b/examples/run_job.go @@ -19,5 +19,6 @@ func main() { } }) job.SetCoNum(2) + job.AddLogger(logger) job.Run() } diff --git a/go.mod b/go.mod index ddd6d9fe6b30b1a649e85c926428cfd691b61e57..f3a24d34f2b941b74ba9c41565c26384bdf9e26f 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.12 require ( github.com/julienschmidt/httprouter v1.3.0 github.com/natefinch/lumberjack v2.0.0+incompatible - github.com/satori/go.uuid v1.2.0 // indirect + github.com/satori/go.uuid v1.2.0 go.uber.org/zap v1.16.0 + gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect ) diff --git a/go.sum b/go.sum index c3378df481ba3211b85a010ebea3817e004c2e22..b82c732cdc6f08fc12d76f72a3a9435e5b68a50e 100644 --- a/go.sum +++ b/go.sum @@ -1,33 +1,41 @@ +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/natefinch/lumberjack v0.0.0-20150411233054-6d54cbc97d7e/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4UpgHp07nNdFX7mqFfM= github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -40,10 +48,16 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/src/v1/httpserver/server_http.go b/src/v1/httpserver/server_http.go index e6f6854fa08ff8dcffb96f0df6c8f5534ec618b0..2f3911c571f8307e133998051a793ae9742158ee 100644 --- a/src/v1/httpserver/server_http.go +++ b/src/v1/httpserver/server_http.go @@ -135,6 +135,7 @@ func (s *HttpServer) Stop() error { if s.server == nil { return nil } + s.Info("http stop %s", s.listenAdd) err := s.server.Shutdown(context.Background()) s.server = nil diff --git a/src/v1/jobserver/job.go b/src/v1/jobserver/job.go index 38ffaec3cd9dca3ea070fb7708e9be088f667c5e..10c6fcd32bc954831d4c758e72dc8c4fe7938d3b 100644 --- a/src/v1/jobserver/job.go +++ b/src/v1/jobserver/job.go @@ -43,6 +43,7 @@ func (j *Job) Run() error { go j.run() } j.Wait() + j.Info("job[%s] run end", j.Name()) return nil } diff --git a/src/v1/log/log.go b/src/v1/log/log.go index 39f6d7c000a56f36e4712d2b8fb58acdcb5b4dd6..2e8fcfdc7eb5399e51a799dbef8035837f89c1d7 100644 --- a/src/v1/log/log.go +++ b/src/v1/log/log.go @@ -5,7 +5,8 @@ import ( ) const ( - DebugLog = iota + DebugLog = 1 << iota + TraceLog InfoLog WarnLog ErrorLog @@ -13,6 +14,18 @@ const ( FatalLog ) +var LogLevelMap = map[int]string{ + TraceLog: "Trace", + DebugLog: "Debug", + InfoLog: "Info", + WarnLog: "Warning", + ErrorLog: "Error", + FatalLog: "Fatal", + PanicLog: "Panic", +} + +const DefaultLogPath = "./runtime/logs/daily.log" + type ILog interface { Debug(log string) error Info(log string) error @@ -31,62 +44,73 @@ func (ink *InvokeLog) AddLogger(logger ILog) { ink.logger = logger } -func (ink *InvokeLog) Log(level int8, msg string) error { +func (ink *InvokeLog) Log(level int8, msg string) { if ink.logger == nil { - return nil + return } + var err error switch level { case DebugLog: - return ink.logger.Debug(msg) + err = ink.logger.Debug(msg) case WarnLog: - return ink.logger.Warn(msg) + err = ink.logger.Warn(msg) case InfoLog: - return ink.logger.Info(msg) + err = ink.logger.Info(msg) case ErrorLog: - return ink.logger.Error(msg) + err = ink.logger.Error(msg) case FatalLog: - return ink.logger.Fatal(msg) + err = ink.logger.Fatal(msg) case PanicLog: - return ink.logger.Panic(msg) + err = ink.logger.Panic(msg) + } + + if err != nil { + panic(err) } - return nil } func (ink *InvokeLog) Debug(log string, params ...interface{}) error { - if ink.logger != nil { - return ink.logger.Debug(fmt.Sprintf(log, params)) + if ink.logger == nil { + return nil } - return nil + + return ink.logger.Debug(fmt.Sprintf(log, params...)) } func (ink *InvokeLog) Info(log string, params ...interface{}) error { - - if ink.logger != nil { - return ink.logger.Info(fmt.Sprintf(log, params)) + if ink.logger == nil { + return nil } - return nil + + return ink.logger.Info(fmt.Sprintf(log, params...)) } + func (ink *InvokeLog) Warn(log string, params ...interface{}) error { - if ink.logger != nil { - return ink.logger.Warn(fmt.Sprintf(log, params)) + if ink.logger == nil { + return nil } - return nil + + return ink.logger.Warn(fmt.Sprintf(log, params...)) } func (ink *InvokeLog) Error(log string, params ...interface{}) error { - if ink.logger != nil { - return ink.logger.Error(fmt.Sprintf(log, params)) + if ink.logger == nil { + return nil } - return nil + + return ink.logger.Error(fmt.Sprintf(log, params...)) } func (ink *InvokeLog) Panic(log string, params ...interface{}) error { - if ink.logger != nil { - return ink.logger.Panic(fmt.Sprintf(log, params)) + + if ink.logger == nil { + return nil } - return nil + + return ink.logger.Panic(fmt.Sprintf(log, params...)) } func (ink *InvokeLog) Fatal(log string, params ...interface{}) error { - if ink.logger != nil { - return ink.logger.Fatal(fmt.Sprintf(log, params)) + if ink.logger == nil { + return nil } - return nil + + return ink.logger.Fatal(fmt.Sprintf(log, params...)) } diff --git a/src/v1/log/log_default.go b/src/v1/log/log_default.go new file mode 100644 index 0000000000000000000000000000000000000000..2b0a79a7fff791a39f94ab811f52a013bc6ac687 --- /dev/null +++ b/src/v1/log/log_default.go @@ -0,0 +1,159 @@ +package log + +import ( + "errors" + "fmt" + "gitee.com/scottq/go-framework/src/miscs" + "log" + "os" + "path" + "path/filepath" + "strconv" + "time" +) + +type MyLoggerConfig struct { + Module string + Path string + PathAutoCreate bool + ConsoleOut bool + Flag int +} + +func (c *MyLoggerConfig) LogPath() string { + p := c.Path + if p == "" { + p = DefaultLogPath + } + + return p +} + +type MyLogger struct { + logger *log.Logger + config *MyLoggerConfig +} + +func (logger *MyLogger) Write(p []byte) (int, error) { + level := string(p[len(p)-2]) + + l, err := strconv.Atoi(level) + if err != nil { + return 0, err + } + levelStr, ok := LogLevelMap[l] + if !ok { + return 0, errors.New("log level not exists") + } + file, err := os.OpenFile(logger.LogPath(), os.O_CREATE|os.O_RDWR|os.O_APPEND, 0777) + if err != nil { + return 0, err + } + defer file.Close() + + pl := []byte(fmt.Sprintf("%s %s", levelStr, string(p[:len(p)-2]))) + + if logger.config.ConsoleOut { + fmt.Print(string(pl)) + } + return file.Write(pl) +} + +//设置的path +func (logger *MyLogger) Path() string { + return logger.config.Path +} + +func (logger *MyLogger) checkLogPath() error { + var err error + + p := logger.config.LogPath() + absPath, err := filepath.Abs(filepath.Dir(p)) + if err != nil { + return err + } + + err = os.MkdirAll(absPath, 0700) + if err != nil { + return err + } + + s, err := os.Stat(path.Dir(p)) + if err != nil { + return fmt.Errorf("log dir error : %s", p) + } + + if !s.IsDir() { + return fmt.Errorf("log dir not exists : %s", p) + } + + return nil +} + +//最终日志path +func (logger *MyLogger) LogPath() string { + p := logger.config.LogPath() + + var parseT time.Time + + parseT = time.Now() + t := parseT.Format(miscs.DateTimeLayout) + return fmt.Sprintf("%s-%s.log", p[:len(p)-len(".log")], t) +} + +func (logger *MyLogger) Trace(s string) error { + return logger.logItem(TraceLog, s) +} + +func (logger *MyLogger) Debug(s string) error { + return logger.logItem(DebugLog, s) +} + +func (logger *MyLogger) Info(s string) error { + return logger.logItem(InfoLog, s) +} + +func (logger *MyLogger) Warn(s string) error { + return logger.logItem(WarnLog, s) +} + +func (logger *MyLogger) Error(s string) error { + return logger.logItem(ErrorLog, s) +} + +func (logger *MyLogger) Panic(s string) error { + return logger.logItem(PanicLog, s) +} + +func (logger *MyLogger) Fatal(s string) error { + return logger.logItem(FatalLog, s) +} + +func (logger *MyLogger) logItem(level int, s string) error { + sl := fmt.Sprintf("%s\n%d\n", s, level) + return logger.logger.Output(3, sl) +} + +func (logger *MyLogger) logItemf(level int, format string, s ...interface{}) error { + sl := fmt.Sprintf("%s\n%d\n", fmt.Sprintf(format, s...), level) + return logger.logger.Output(3, sl) +} + +func NewDefaultLogger(c *MyLoggerConfig) *MyLogger { + myLogger := &MyLogger{ + config: c, + } + if c.Flag <= 0 { + c.Flag = log.Ldate | log.Lshortfile | log.Lmicroseconds + } + prefix := c.Module + if prefix != "" { + prefix = fmt.Sprintf("【%s】", prefix) + } + err := myLogger.checkLogPath() + if err != nil { + panic(err) + } + myLogger.logger = log.New(myLogger, prefix, c.Flag) + return myLogger +} diff --git a/src/v1/log/log_default_test.go b/src/v1/log/log_default_test.go new file mode 100644 index 0000000000000000000000000000000000000000..e381c2383b8596c38036037729dd467fc777d7fe --- /dev/null +++ b/src/v1/log/log_default_test.go @@ -0,0 +1,17 @@ +package log + +import "testing" + +const TestRuntimePath="../../../examples/runtime" + +func TestNewDefaultLoggerInfo(t *testing.T) { + + c := &MyLoggerConfig{ + Module: "test", + Path: TestRuntimePath+"/logs/test.log", + ConsoleOut: true, + } + logger := NewDefaultLogger(c) + + logger.Info("hello world") +} diff --git a/src/v1/log/log_zap.go b/src/v1/log/log_zap.go index e3b25d768ead3eadbf7437e5ddc5682c4babf7c9..2111c4c5d44debe5a2b8c16f4cac68936e0f42d1 100644 --- a/src/v1/log/log_zap.go +++ b/src/v1/log/log_zap.go @@ -8,13 +8,13 @@ import ( ) //default logger -type DefaultLog struct { +type DefaultZapLog struct { logPath string - config *LogConfig + config *ZapLogConfig zapLog *zap.Logger } -type LogConfig struct { +type ZapLogConfig struct { MaxSize int MaxAge int MaxBackups int @@ -23,9 +23,9 @@ type LogConfig struct { DebugLevel string } -func NewZapLog(name string, logPath string, config *LogConfig) ILog { +func NewZapLog(name string, logPath string, config *ZapLogConfig) ILog { if config == nil { - config = &LogConfig{ + config = &ZapLogConfig{ MaxSize: 128, // 每个日志文件保存的大小 单位:M MaxAge: 7, // 文件最多保存多少天 MaxBackups: 30, // 日志文件最多保存多少个备份 @@ -75,38 +75,38 @@ func NewZapLog(name string, logPath string, config *LogConfig) ILog { zap.Fields(zap.String("Name", name)), // 设置初始化字段 ) logger.Info("log 初始化成功") - return &DefaultLog{ + return &DefaultZapLog{ logPath: logPath, zapLog: logger, } } -func (l *DefaultLog) Debug(msg string) error { +func (l *DefaultZapLog) Debug(msg string) error { l.zapLog.Debug(msg) return nil } -func (l *DefaultLog) Info(msg string) error { +func (l *DefaultZapLog) Info(msg string) error { l.zapLog.Info(msg) return nil } -func (l *DefaultLog) Warn(msg string) error { +func (l *DefaultZapLog) Warn(msg string) error { l.zapLog.Warn(msg) return nil } -func (l *DefaultLog) Error(msg string) error { +func (l *DefaultZapLog) Error(msg string) error { l.zapLog.Error(msg) return nil } -func (l *DefaultLog) Panic(msg string) error { +func (l *DefaultZapLog) Panic(msg string) error { l.zapLog.Panic(msg) return nil } -func (l *DefaultLog) Fatal(msg string) error { +func (l *DefaultZapLog) Fatal(msg string) error { l.zapLog.Fatal(msg) return nil }