是否有内置的记录器可以滚动

时间:2013-01-15 07:13:59

标签: go

是否有内置的Go记录器可以在达到文件大小限制时滚动日志文件?

感谢。

3 个答案:

答案 0 :(得分:3)

不,记录器中没有内置目前具有此功能的内置 log4go ,您会在搜索时找到它,目前已损坏。有一些issues,导致邮件丢失(如果主程序退出并且一些消息在写入之前仍然在channelbuffer中。) 这在大多数(如果不是全部)示例中都存在。

另见this question

答案 1 :(得分:2)

syslog package之上,这可能不是你真正想要的,标准库中没有这样的东西。

来自第三方软件包,例如log4go声称拥有此功能。

答案 2 :(得分:0)

import (
    "os"

    "github.com/nikandfor/tlog"
    "github.com/nikandfor/tlog/rotated"
)

func main() {
    f, err := rotated.Create("logfile_template_#.log") // # will be substituted by time of file creation
    if err != nil {
        panic(err)
    }
    defer f.Close()

    f.MaxSize = 1 << 30    // 1GiB
    f.Fallback = os.Stderr // in case of failure to write to file, last chance to save log message

    tlog.DefaultLogger = tlog.New(tlog.NewConsoleWriter(f, tlog.LstdFlags))

    tlog.Printf("now use it much like %v", "log.Logger")

    log.SetOutput(f) // also works for any logger or what ever needs io.Writer

    log.Printf("also appears in the log")

}