package util
import (
"fmt"
goLogger "github.com/phachon/go-logger"
"os"
)
var Logger *goLogger.Logger
func InitLogger(env, hostname string) error {
Logger = goLogger.NewLogger()
_ = Logger.Detach("console")
if env == "prod" {
if exists, _ := PathExists(Config.Log.Path); !exists {
err := os.MkdirAll(Config.Log.Path, os.ModePerm)
if err != nil {
return err
}
}
// 文件输出配置
fileConfig := &goLogger.FileConfig{
Filename: fmt.Sprintf("%s/aiops-cartoon-gateway-%s.log", Config.Log.Path, hostname), // 日志输出文件名,不自动存在
// 如果要将单独的日志分离为文件,请配置LealFrimeNem参数。
LevelFileName: map[int]string{
Logger.LoggerLevel("error"): fmt.Sprintf("%s/error-%s.log", Config.Log.Path, hostname), // Error 级别日志被写入 error .log 文件
},
MaxSize: 1024 * 1024, // 文件最大值(KB),默认值0不限
MaxLine: 100000, // 文件最大行数,默认 0 不限制
DateSlice: "d", // 文件根据日期切分, 支持 "Y" (年), "m" (月), "d" (日), "H" (时), 默认 "no", 不切分
JsonFormat: Config.Log.IsJson, // 写入文件的数据是否 json 格式化
Format: "", // 如果写入文件的数据不 json 格式化,自定义日志格式
}
// 添加 file 为 Logger 的一个输出
_ = Logger.Attach("file", goLogger.LOGGER_LEVEL_DEBUG, fileConfig)
} else {
// 命令行输出配置
consoleConfig := &goLogger.ConsoleConfig{
Color: true, // 命令行输出字符串是否显示颜色
JsonFormat: Config.Log.IsJson, // 命令行输出字符串是否格式化
Format: "", // 如果输出的不是 json 字符串,JsonFormat: false, 自定义输出的格式
}
// 添加 console 为 Logger 的一个输出
_ = Logger.Attach("console", goLogger.LOGGER_LEVEL_DEBUG, consoleConfig)
}
return nil
}