登录
首页 >  Golang >  Go问答

在日志文件名中添加时间戳 - 如何实现日志轮换?

来源:stackoverflow

时间:2024-03-24 15:15:23 387浏览 收藏

在日志文件名中添加时间戳有助于日志轮换。本文介绍了如何使用 `go.uber.org/zap` 和 `gopkg.in/natefinch/lumberjack.v2` 为日志文件添加时间戳。通过修改 `lumberjack.Logger` 的 `Filename` 字段,可以使用 `time.Now().Format(time.RFC822)` 函数将当前时间戳添加到日志文件名中,从而实现日志轮换。

问题内容

下面的轮换日志代码:

package main

import (
    "os"

    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
    lumberjack "gopkg.in/natefinch/lumberjack.v2"
)

func main() {
    logPath, _ := os.Getwd()
    log := NewLoggerFp(logPath, 1, 2, 2)

    log.Infof("sjkshfjsdf\n")
    log.Infof("sjkshfjsdf\n")
    log.Infof("sjkshfjsdf\n")
}

func NewLoggerFp(logPath string, maxSize, maxBackUp, maxAge int) *zap.SugaredLogger {

    w := zapcore.AddSync(&lumberjack.Logger{

        Filename:   logPath + "/dump.log",
        MaxSize:    maxSize, // megabytes
        MaxBackups: maxBackUp,
        MaxAge:     maxAge, // days
    })

    core := zapcore.NewCore(
        zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()),
        w,
        zap.InfoLevel,
    )

    return zap.New(core).Sugar()
}

日志已创建 如何向dump.log添加时间戳?


正确答案


我试图理解克里斯蒂安的建议。也许你可以试试这个。

w := zapcore.AddSync(&lumberjack.Logger{

    Filename:   logPath + fmt.Sprintf("/dump-%v.log", time.Now().Format(time.RFC822)),
    MaxSize:    maxSize, // megabytes
    MaxBackups: maxBackUp,
    MaxAge:     maxAge, // days
})

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《在日志文件名中添加时间戳 - 如何实现日志轮换?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>