151 lines
4.2 KiB
Go
151 lines
4.2 KiB
Go
// Package zaplog 封装zap日志库,配置文件
|
||
// @Description: 二次封装开源zap日志库
|
||
// @File: zaplog
|
||
package zaplog
|
||
|
||
// 定义默认的常量
|
||
const (
|
||
defaultBaseDirectoryName = "logs" // 日志根目录
|
||
defaultInfoDirectoryName = "info" // info日志目录
|
||
defaultWarnDirectoryName = "warn" // warn日志目录
|
||
defaultErrorDirectoryName = "error" // error日志目录
|
||
defaultInfoFileName = "info.log" // info日志文件
|
||
defaultWarnFileName = "warn.log" // warn日志文件
|
||
defaultErrorFileName = "error.log" // error日志文件
|
||
defaultLogFileMaxSize = 128 // 日志文件大小,单位:MB
|
||
defaultLogFileMaxBackups = 180 // 日志文件保留个数 多于180个文件后,清理比价旧的日志
|
||
defaultLogFileMaxAge = 360 // 任何编码时间戳超过 MaxAge 值的文件都将被删除 day
|
||
defaultLogFileCompress = false // 日志文件是否压缩
|
||
defaultLogPrintTag = false // true:在终端和文件同时输出日志; false:只在文件输出日志
|
||
|
||
)
|
||
|
||
// Config 配置文件结构体
|
||
type Config struct {
|
||
BaseDirectoryName string
|
||
InfoDirectoryName string
|
||
WarnDirectoryName string
|
||
ErrorDirectoryName string
|
||
InfoFileName string
|
||
WarnFileName string
|
||
ErrorFileName string
|
||
LogFileMaxSize int
|
||
LogFileMaxBackups int
|
||
LogFileMaxAge int
|
||
LogFileCompress bool
|
||
LogPrintTag bool
|
||
}
|
||
|
||
// Option 定义配置选项函数
|
||
type Option func(*Config)
|
||
|
||
// SetBaseDirectoryName 自定义日志根目录
|
||
func SetBaseDirectoryName(name string) Option {
|
||
return func(c *Config) {
|
||
c.BaseDirectoryName = name
|
||
}
|
||
}
|
||
|
||
// SetInfoDirectoryName 自定义info日志目录
|
||
func SetInfoDirectoryName(name string) Option {
|
||
return func(c *Config) {
|
||
c.InfoDirectoryName = name
|
||
}
|
||
}
|
||
|
||
// SetWarnDirectoryName 自定义warn日志目录
|
||
func SetWarnDirectoryName(name string) Option {
|
||
return func(c *Config) {
|
||
c.WarnDirectoryName = name
|
||
}
|
||
}
|
||
|
||
// SetErrorDirectoryName 自定义error日志目录
|
||
func SetErrorDirectoryName(name string) Option {
|
||
return func(c *Config) {
|
||
c.ErrorDirectoryName = name
|
||
}
|
||
}
|
||
|
||
// SetInfoFileName 自定义info文件名
|
||
func SetInfoFileName(name string) Option {
|
||
return func(c *Config) {
|
||
c.InfoFileName = name
|
||
}
|
||
}
|
||
|
||
// SetWarnFileName 自定义warn文件名
|
||
func SetWarnFileName(name string) Option {
|
||
return func(c *Config) {
|
||
c.WarnFileName = name
|
||
}
|
||
}
|
||
|
||
// SetErrorFileName 自定义error文件名
|
||
func SetErrorFileName(name string) Option {
|
||
return func(c *Config) {
|
||
c.ErrorFileName = name
|
||
}
|
||
}
|
||
|
||
// SetLogFileMaxSize 自定义日志文件大小
|
||
func SetLogFileMaxSize(size int) Option {
|
||
return func(c *Config) {
|
||
c.LogFileMaxSize = size
|
||
}
|
||
}
|
||
|
||
// SetLogFileMaxBackups 自定义日志文件保留个数
|
||
func SetLogFileMaxBackups(size int) Option {
|
||
return func(c *Config) {
|
||
c.LogFileMaxBackups = size
|
||
}
|
||
}
|
||
|
||
// SetLogFileMaxAge 自定义日志保留时间
|
||
func SetLogFileMaxAge(size int) Option {
|
||
return func(c *Config) {
|
||
c.LogFileMaxAge = size
|
||
}
|
||
}
|
||
|
||
// SetLogFileCompress 自定义日志文件是否压缩
|
||
func SetLogFileCompress(compress bool) Option {
|
||
return func(c *Config) {
|
||
c.LogFileCompress = compress
|
||
}
|
||
}
|
||
|
||
// SetLogPrintTag 自定义日志输出标记位 true:在终端和文件同时输出日志; false:只在文件输出日志
|
||
func SetLogPrintTag(tag bool) Option {
|
||
return func(c *Config) {
|
||
c.LogPrintTag = tag
|
||
}
|
||
}
|
||
|
||
// NewConfig 应用函数选项配置
|
||
func NewConfig(opts ...Option) Config {
|
||
// 初始化默认值
|
||
defaultConfig := Config{
|
||
BaseDirectoryName: defaultBaseDirectoryName,
|
||
InfoDirectoryName: defaultInfoDirectoryName,
|
||
WarnDirectoryName: defaultWarnDirectoryName,
|
||
ErrorDirectoryName: defaultErrorDirectoryName,
|
||
InfoFileName: defaultInfoFileName,
|
||
WarnFileName: defaultWarnFileName,
|
||
ErrorFileName: defaultErrorFileName,
|
||
LogFileMaxSize: defaultLogFileMaxSize,
|
||
LogFileMaxBackups: defaultLogFileMaxBackups,
|
||
LogFileMaxAge: defaultLogFileMaxAge,
|
||
LogFileCompress: defaultLogFileCompress,
|
||
LogPrintTag: defaultLogPrintTag,
|
||
}
|
||
|
||
// 依次调用opts函数列表中的函数,为结构体成员赋值
|
||
for _, opt := range opts {
|
||
opt(&defaultConfig)
|
||
}
|
||
|
||
return defaultConfig
|
||
}
|