组件分享之后端组件——用于将日志写入滚动文件的组件包lumberjack
背景
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。
组件基本信息
- 组件:lumberjack
- 开源协议: MIT license
内容
本节我们分享一个用于将日志写入滚动文件的组件包lumberjack,它可以有效的配合zap组件进行快速使用。
Lumberjack 旨在成为伐木基础设施的一部分。它不是一个多合一的解决方案,而是一个位于日志堆栈底部的可插入组件,它简单地控制写入日志的文件。 Lumberjack 可以很好地与任何可以写入 io.Writer 的日志包配合使用,包括标准库的日志包。 Lumberjack 假设只有一个进程正在写入输出文件。在同一台机器上的多个进程中使用相同的伐木工人配置将导致不当行为。
具体使用方式如下: 1、安装
代码语言:javascript复制go get gopkg.in/natefinch/lumberjack.v2
2、使用
代码语言:javascript复制log.SetOutput(&lumberjack.Logger{
Filename: "/var/log/myapp/foo.log",
MaxSize: 500, // megabytes
MaxBackups: 3,
MaxAge: 28, //days
Compress: true, // disabled by default
})
3、和zap结合使用核心函数,其中配置参数部分自己定义一个结构体进行加载即可
代码语言:javascript复制//
// getLogWriter
// @Description: 日志文件分割配置
// @param filename
// @return zapcore.WriteSyncer
//
func getLogWriter(fileName string) zapcore.WriteSyncer {
lumberJackLogger := &lumberjack.Logger{
Filename: fileName,
MaxSize: config.Get().Log.MaxSize, //最大M数,超过则切割
MaxBackups: config.Get().Log.MaxBackups, //最大文件保留数,超过就删除最老的日志文件
MaxAge: config.Get().Log.MaxAge, //保存30天
Compress: config.Get().Log.Compress, //是否压缩
}
return zapcore.AddSync(lumberJackLogger)
}
更多该组件的使用方式,可以参考我编写的Golang快速开发框架系列。
本文声明:
88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。