我正在尝试编写一个将在远程服务器上运行的网络应用程序。我需要记录以捕获错误/调试/审核。
我发现 golang 有多个日志记录包可用,包括标准的“log”包。但是,我需要满足三个要求:
- 日志文件需要轮换
- 它适用于包含的包
使用“日志”
- 它需要是跨平台的。开发环境是
Linux,需要部署在Windows上。
虽然@Crast 给出了一个非常好的答案,但我还想提请注意 -伐木工人 https://github.com/natefinch/lumberjack记录者内特·芬奇 https://github.com/natefinch我最终使用了它。
以下是如何使用它:
- 首先,克隆伐木工人 https://github.com/natefinch/lumberjack存储库或以某种方式获取它。
- Run the
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 创建了该文件,但您可能不需要它,因为 lumberjack 内部会这样做,但我更喜欢这种方式。谢谢,希望有帮助。
再次感谢@Crast 和内特·芬奇 https://github.com/natefinch.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)