我正在尝试编写一个将在远程服务器上运行的 Web 应用程序。我需要记录以捕获错误/调试/审核。 我发现有多个日志包可用于 golang,包括标准的“日志”包。但是,我需要满足三个要求:
- 日志文件需要轮换
- 它适用于包含的软件包 其中使用“日志”
- 它需要是跨平台的。开发环境是 Linux,需要部署在 Windows 上。
最佳答案
虽然@Crast 给出了很好的答案,但我也想提一下 - lumberjack记录器 Nate Finch我最终使用了。
这里是如何使用它:
- 首先,克隆 lumberjack存储库或以某种方式获取它。
- 对文件夹运行
go install
命令。 - 现在导入 go 的“log”包和“lumberjack 包”。
进口( “日志” “github.com/natefinch/lumberjack” )
- 现在像这样在你的代码中使用它:
在 main 之外,声明你的日志变量。
var errLog *log.Logger
内部主要:
e, err := os.OpenFile("./foo.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
fmt.Printf("error opening file: %v", err)
os.Exit(1)
}
errLog = log.New(e, "", log.Ldate|log.Ltime)
errLog.SetOutput(&lumberjack.Logger{
Filename: "./foo.log",
MaxSize: 1, // megabytes after which new file is created
MaxBackups: 3, // number of backups
MaxAge: 28, //days
})
现在只要文件大小达到 1MB,就会创建一个新文件来保留以前的日志和当前时间戳,并且新日志将继续登录到 foo.log 文件中。此外,我已经使用 os.OpenFile 创建了该文件,但您可能不需要它,因为伐木 worker 内部会这样做,但我更喜欢这种方式。谢谢,希望对您有所帮助。 再次感谢@Crast 和 NateFinch .
关于logging - 如何将 golang 登录到具有日志轮换的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28796021/