tkcashgame_v4/pkg/log/zaplog/config.go

151 lines
4.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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
}