diff --git a/config/config.go b/config/config.go index 7148dc9..1e5f9ae 100644 --- a/config/config.go +++ b/config/config.go @@ -84,6 +84,7 @@ func NewConfig() *Config { initDirectory(conf) mode = conf.Sonic.Mode + logMode = conf.Sonic.LogMode return conf } @@ -104,7 +105,19 @@ func initDirectory(conf *Config) { } var mode string +var logMode LogMode func IsDev() bool { return mode == "development" } + +func LogToConsole() bool { + switch logMode { + case Console: + return true + case File: + return false + default: + return IsDev() + } +} diff --git a/config/model.go b/config/model.go index 44ec967..1b5d0eb 100644 --- a/config/model.go +++ b/config/model.go @@ -41,9 +41,17 @@ type Levels struct { Gorm string `mapstructure:"gorm"` } +type LogMode string + +const ( + Console LogMode = "console" + File LogMode = "file" +) + type Sonic struct { - Mode string `mapstructure:"mode"` - WorkDir string `mapstructure:"work_dir"` + Mode string `mapstructure:"mode"` + LogMode LogMode `mapstructure:"log_mode"` + WorkDir string `mapstructure:"work_dir"` UploadDir string LogDir string `mapstructure:"log_dir"` TemplateDir string `mapstructure:"template_dir"` diff --git a/log/gorm_logger.go b/log/gorm_logger.go index da3f08e..4b1dca0 100644 --- a/log/gorm_logger.go +++ b/log/gorm_logger.go @@ -28,7 +28,7 @@ func NewGormLogger(conf *config.Config, zapLogger *zap.Logger) logger.Interface SlowThreshold: 200 * time.Millisecond, LogLevel: GetGormLogLevel(conf.Log.Levels.Gorm), IgnoreRecordNotFoundError: true, - Colorful: config.IsDev(), + Colorful: config.LogToConsole(), } gl := &gormLogger{ Config: logConfig, diff --git a/log/init.go b/log/init.go index 8edb631..c384891 100644 --- a/log/init.go +++ b/log/init.go @@ -14,7 +14,7 @@ import ( func NewLogger(conf *config.Config) *zap.Logger { _, err := os.Stat(conf.Sonic.LogDir) if err != nil { - if os.IsNotExist(err) && !config.IsDev() { + if os.IsNotExist(err) && !config.LogToConsole() { err := os.MkdirAll(conf.Sonic.LogDir, os.ModePerm) if err != nil { panic("mkdir failed![%v]") @@ -24,7 +24,7 @@ func NewLogger(conf *config.Config) *zap.Logger { var core zapcore.Core - if config.IsDev() { + if config.LogToConsole() { core = zapcore.NewCore(getDevEncoder(), os.Stdout, getLogLevel(conf.Log.Levels.App)) } else { core = zapcore.NewCore(getProdEncoder(), getWriter(conf), zap.DebugLevel)