3

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

谢谢。

4

3 回答 3

3

不,目前没有内置的记录器具有此功能。
log4go,你会在搜索时发现推荐的,目前已损坏。有一些问题会导致消息丢失(如果主程序退出并且某些消息在写入之前仍在通道缓冲区中)。
这存在于大多数(如果不是全部)示例中。

另见这个问题

于 2013-01-15T16:52:47.033 回答
2

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

从第 3 方包中,例如log4go声称具有此功能。

于 2013-01-15T07:18:01.747 回答
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")

}
于 2019-12-08T22:31:41.200 回答