github.com/binbinly/pkg@v0.0.11-0.20240321014439-f4fbf666eb0f/logger/README.md (about) 1 # 说明 2 3 本logger主要是对zap库的封装,便于使用。当然也可以根据接口使用其他日志库,比如 `logrus`。 4 5 ## 日志功能 6 7 - 将日志信息记录到日志文件里 8 - 日志切割-能够根据日志文件大小或时间间隔进行切割 9 - 支持不同的日志级别(eg:info,debug,warn,error,fatal) 10 - 支持按日志级别分类输出到不同日志文件 11 - 能够打印基本信息,如调用文件/函数名和行号,日志时间,IP等 12 13 ## 使用方法 14 15 ```go 16 log.Info("user_id is 1") 17 log.Warn("user is not exist") 18 log.Error("params error") 19 20 log.Warnf("params is empty") 21 ... 22 ``` 23 24 ## 原则 25 26 日志尽量不要在 model, repository, service中打印输出,最好使用 `errors.Wrapf` 将错误和消息返回到上层,然后在 handler 层中处理错误, 27 也就是通过日志打印出来。 28 29 这样做的好处是:避免相同日志在多个地方打印,让排查问题更简单。 30 31 ## Reference 32 33 - 日志基础库 zap: https://github.com/uber-go/zap 34 - 日志分割库-按时间:https://github.com/lestrrat-go/file-rotatelogs 35 - 日志分割库-按大小:https://github.com/natefinch/lumberjack 36 - [深度 | 从Go高性能日志库zap看如何实现高性能Go组件](https://mp.weixin.qq.com/s/i0bMh_gLLrdnhAEWlF-xDw) 37 - [Logger interface for GO with zap and logrus implementation](https://www.mountedthoughts.com/golang-logger-interface/) 38 - https://github.com/wzyonggege/logger 39 - https://wisp888.github.io/golang-iris-%E5%AD%A6%E4%B9%A0%E4%BA%94-zap%E6%97%A5%E5%BF%97.html 40 - https://www.mountedthoughts.com/golang-logger-interface/