uber zap log组建,利用lumberjack插件写到文件
package log
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
"os"
"sync"
"time"
)
var Logger *zap.Logger
func Release() error {
return Logger.Sync()
}
type logWriter struct {
w *lumberjack.Logger
t time.Time
mu sync.Mutex
}
func (lw *logWriter) Write(p []byte) (n int, err error) {
lw.mu.Lock()
defer lw.mu.Unlock()
now := time.Now()
if now.YearDay() != lw.t.YearDay() {
lw.t = now
if err := lw.w.Rotate(); nil != err {
return 0, err
}
}
return lw.w.Write(p)
}
func Init(serviceName string, isDebug bool, logFilePath string, logLevel string, maxByteSize int, maxAge int, needCompress bool, customFields ...zap.Field) {
var w zapcore.WriteSyncer
if isDebug {
w = zapcore.AddSync(os.Stdout)
} else {
w = zapcore.AddSync(&logWriter{
w: &lumberjack.Logger{
F