3 Star 13 Fork 7

NightTC/Gobige

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
config.go 3.22 KB
Copy Edit Raw Blame History
package logger
import (
"fmt"
"os"
"path/filepath"
"sync/atomic"
"text/template"
"unsafe"
)
// LogFileConfig 表示日志文件的配置。
type LogFileConfig struct {
LogFileName string // 日志文件名字
LogFilePath string // 日志文件路径
LogFileLevel logLevel // 日志文件等级
LogFileMaxLine int // 单个日志文件最大行数
LogFileMaxNumber int // 日志文件最大编号(如果为0则不会每个生成间隔内只会产生一个带日期后缀的日志文件,日志文件达到最大行数则不会再写日志)
LogFileMaxSaveDays int // 日志文件最大保存天数(<1:永久保存 >=1:第二天0点删除 ... 以此类推)
Keys []string // Debug时可以输入的Key
AppendFileInfo bool // 是否增加文件信息
TrimFilePath bool // 是否去除文件的路径
}
// GetAtomicFileLevel 获取日志文件的原子等级。
// 返回值:
//
// logLevel: 当前日志等级。
func (cfg *LogFileConfig) GetAtomicFileLevel() logLevel {
val := atomic.LoadInt64((*int64)(unsafe.Pointer(&logGlobal.config.LogFileLevel)))
return logLevel(val)
}
var defaultLogConfig = &LogFileConfig{
LogFileName: "default",
LogFilePath: "./log/",
LogFileLevel: LogLevelDebug,
LogFileMaxLine: 200000,
LogFileMaxNumber: 2000,
LogFileMaxSaveDays: 3,
Keys: []string{LogKey_Default},
AppendFileInfo: true,
TrimFilePath: true,
}
// GenLogConfigFile 生成默认的日志配置文件。
// 参数:
//
// cfgpath: 配置文件路径。
func GenLogConfigFile(cfgpath string) {
if filepath.Ext(cfgpath) == ".toml" {
if _, err := os.Stat(cfgpath); os.IsNotExist(err) {
tpl, err := template.New("LogFile").Parse(logfile)
if err != nil {
fmt.Println(err)
return
}
key := &struct {
MapList map[LogKeyEnum]string
}{
MapList: _LogKeyMap,
}
f, _ := os.Create(cfgpath)
_ = tpl.Execute(f, key)
f.Close()
// 没有对应的log.toml文件
// toml.DecodeFile(cfgpath, defaultLogConfig)
}
}
}
const (
logfile = `
# 文件保存路劲
LogFilePath = "../logs/"
# 0 致命等级(输出致命日志)一般是未知错误,发生了里发报警
# 1 错误等级(输出错误日志)一般是已知错误,发生了需要处理
# 2 警告等级一般是配置表有错,但不影响正常运行等
# 3 信息等级上线后正常需要看到的日志,报告状态等
# 4 调试等级上线后不需要看到的日志,调试用,可以使用Key来临时开关的日志
# 只会输入小于等于LogFileLevel设置值的等级日志
LogFileLevel = 4
# 单个日志文件最大行数
LogFileMaxLine = 200000
# 日志文件最大编号
# (如果为0则不会每个生成间隔内只会产生一个带日期后缀的日志文件,
# 日志文件达到最大行数则不会再写日志)
LogFileMaxNumber = 2000
# 日志文件最大保存天数(0:永久保存 1:第二天0点删除 ... 以此类推)
LogFileMaxSaveDays = 3
# 是否增加文件信息
AppendFileInfo = false
# 是否去除文件的路径
TrimFilePath = false
# 日志为调试等级(Debug)时,
# 下面标注的Key才会被输出
# 可以根据需要自己在上面加
Keys = [
{{range $key, $value := .MapList}} "{{$key}}", # {{$value}}
{{end}}]
`
)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/night-tc/gobige.git
git@gitee.com:night-tc/gobige.git
night-tc
gobige
Gobige
344351ffdef8

Search