# README
说明
本logger主要是对zap库的封装,便于使用。当然也可以根据接口使用其他日志库,比如 logrus
。
日志功能
- 将日志信息记录到日志文件里
- 日志切割-能够根据日志文件大小或时间间隔进行切割
- 支持不同的日志级别(eg:info,debug,warn,error,fatal)
- 支持按日志级别分类输出到不同日志文件
- 能够打印基本信息,如调用文件/函数名和行号,日志时间,IP等
使用方法
log.Info("user_id is 1")
log.Warn("user is not exist")
log.Error("params error")
log.Warnf("params is empty")
...
原则
日志尽量不要在 model, repository, service中打印输出,最好使用 errors.Wrapf
将错误和消息返回到上层,然后在 handler 层中处理错误,
也就是通过日志打印出来。
这样做的好处是:避免相同日志在多个地方打印,让排查问题更简单。
Reference
- 日志基础库 zap: https://github.com/uber-go/zap
- 日志分割库-按时间:https://github.com/lestrrat-go/file-rotatelogs
- 日志分割库-按大小:https://github.com/natefinch/lumberjack
- 深度 | 从Go高性能日志库zap看如何实现高性能Go组件
- Logger interface for GO with zap and logrus implementation
- https://github.com/wzyonggege/logger
- https://wisp888.github.io/golang-iris-%E5%AD%A6%E4%B9%A0%E4%BA%94-zap%E6%97%A5%E5%BF%97.html
- https://www.mountedthoughts.com/golang-logger-interface/
# Functions
Debug logger.
Debugf logger.
Error logger.
Errorf logger.
Fatal logger.
Fatalf logger.
GetLogFile get log file absolute path.
GetLogger return a log.
GetZapLogger return raw zap logger.
Info logger.
Infof logger.
Init init log.
Warn logger.
Warnf logger.
WithContext is a logger that can log msg and log span for trace.
WithFields logger output more field, eg:
contextLogger := log.WithFields(log.Fields{"key1": "value1"}) contextLogger.Info("print multi field")
or more sample to use:
log.WithFields(log.Fields{"key1": "value1"}).Info("this is a test log") log.WithFields(log.Fields{"key1": "value1"}).Infof("this is a test log, user_id: %d", userID).
WithFilename set log filename.
WithLogDir set log dir.
# Constants
RotateTimeDaily 按天切割.
RotateTimeHourly 按小时切割.
WriterConsole console输出.
WriterFile 文件输出.
# Interfaces
Logger is a contract for the logger.