pet-house/core/server/zap_server/config.go

89 lines
2.5 KiB
Go

package zap_server
import (
"encoding/json"
"fmt"
"strconv"
"github.com/spf13/viper"
"pet-house.com/core/g"
"pet-house.com/core/server/viper_server"
)
var CONFIG = Zap{
Level: "debug",
Format: "console",
Prefix: "[IRIS]",
Director: "logs",
LinkName: "latest_log",
ShowLine: true,
EncodeLevel: "LowercaseColorLevelEncoder",
StacktraceKey: "stacktrace",
LogInConsole: false,
}
type Zap struct {
Level string `mapstructure:"level" json:"level" yaml:"level"` //debug ,info,warn,error,panic,fatal
Format string `mapstructure:"format" json:"format" yaml:"format"`
Prefix string `mapstructure:"prefix" json:"prefix" yaml:"prefix"`
Director string `mapstructure:"director" json:"director" yaml:"director"`
LinkName string `mapstructure:"link-name" json:"link-name" yaml:"link-name"`
ShowLine bool `mapstructure:"show-line" json:"show-line" yaml:"show-line"`
EncodeLevel string `mapstructure:"encode-level" json:"encode-level" yaml:"encode-level"`
StacktraceKey string `mapstructure:"stacktrace-key" json:"stacktrace-key" yaml:"stacktrace-key"`
LogInConsole bool `mapstructure:"log-in-console" json:"log-in-console" yaml:"log-in-console"`
}
// IsExist config file is exist
func IsExist() bool {
return getViperConfig().IsFileExist()
}
// Remove remove config file
func Remove() error {
return getViperConfig().Remove()
}
// Recover
func Recover() error {
b, err := json.Marshal(CONFIG)
if err != nil {
return err
}
return getViperConfig().Recover(b)
}
// getViperConfig get viper config
func getViperConfig() viper_server.ViperConfig {
configName := "zap"
showLine := strconv.FormatBool(CONFIG.ShowLine)
logInConsole := strconv.FormatBool(CONFIG.LogInConsole)
return viper_server.ViperConfig{
Debug: true,
Directory: g.ConfigDir,
Name: configName,
Type: g.ConfigType,
Watch: func(vi *viper.Viper) error {
if err := vi.Unmarshal(&CONFIG); err != nil {
return fmt.Errorf("get Unarshal error: %v", err)
}
// watch config file change
vi.SetConfigName(configName)
return nil
},
//
Default: []byte(`
{
"level": "` + CONFIG.Level + `",
"format": "` + CONFIG.Format + `",
"prefix": "` + CONFIG.Prefix + `",
"director": "` + CONFIG.Director + `",
"link-name": "` + CONFIG.LinkName + `",
"show-line": ` + showLine + `,
"encode-level": "` + CONFIG.EncodeLevel + `",
"stacktrace-key": "` + CONFIG.StacktraceKey + `",
"log-in-console": ` + logInConsole + `
}`),
}
}