是否有内置的Go记录器可以在达到文件大小限制时滚动日志文件?
感谢。
答案 0 :(得分:3)
不,记录器中没有内置目前具有此功能的内置
log4go ,您会在搜索时找到它,目前已损坏。有一些issues,导致邮件丢失(如果主程序退出并且一些消息在写入之前仍然在channelbuffer中。)
这在大多数(如果不是全部)示例中都存在。
答案 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")
}