golang uber log插件支持写到文件

本文介绍了如何使用Uber的zap日志库,并结合lumberjack插件将日志输出到文件,以实现高效且方便的日志管理。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值