diff options
author | ᴜɴᴋɴᴡᴏɴ <u@gogs.io> | 2020-09-29 22:26:07 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-29 22:26:07 +0800 |
commit | 7bc3ee49aa317e48331cf6e39e1911ac89b2e325 (patch) | |
tree | 8d5a515c79061e67f2164e696c189a8d99ce0fcd /internal/db/models.go | |
parent | 8fc40132401747dbd2a39dbb6869eb1652a2f882 (diff) |
cmd/serv: use different log files for ORMs in hook mode (#6361)
Diffstat (limited to 'internal/db/models.go')
-rw-r--r-- | internal/db/models.go | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/internal/db/models.go b/internal/db/models.go index 52ef4495..ac9cbe32 100644 --- a/internal/db/models.go +++ b/internal/db/models.go @@ -10,16 +10,20 @@ import ( "net/url" "os" "path" + "path/filepath" "strings" "time" + "github.com/pkg/errors" "gorm.io/gorm" + "gorm.io/gorm/logger" log "unknwon.dev/clog/v2" "xorm.io/core" "xorm.io/xorm" "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/db/migrations" + "gogs.io/gogs/internal/dbutil" ) // Engine represents a XORM engine or session. @@ -132,16 +136,21 @@ func SetEngine() (*gorm.DB, error) { x.SetMapper(core.GonicMapper{}) - // WARNING: for serv command, MUST remove the output to os.stdout, - // so use log file to instead print to stdout. + var logPath string + if conf.HookMode { + logPath = filepath.Join(conf.Log.RootPath, "hooks", "xorm.log") + } else { + logPath = filepath.Join(conf.Log.RootPath, "xorm.log") + } sec := conf.File.Section("log.xorm") - logger, err := log.NewFileWriter(path.Join(conf.Log.RootPath, "xorm.log"), + fileWriter, err := log.NewFileWriter(logPath, log.FileRotationConfig{ Rotate: sec.Key("ROTATE").MustBool(true), Daily: sec.Key("ROTATE_DAILY").MustBool(true), MaxSize: sec.Key("MAX_SIZE").MustInt64(100) * 1024 * 1024, MaxDays: sec.Key("MAX_DAYS").MustInt64(3), - }) + }, + ) if err != nil { return nil, fmt.Errorf("create 'xorm.log': %v", err) } @@ -151,12 +160,22 @@ func SetEngine() (*gorm.DB, error) { x.SetConnMaxLifetime(time.Second) if conf.IsProdMode() { - x.SetLogger(xorm.NewSimpleLogger3(logger, xorm.DEFAULT_LOG_PREFIX, xorm.DEFAULT_LOG_FLAG, core.LOG_WARNING)) + x.SetLogger(xorm.NewSimpleLogger3(fileWriter, xorm.DEFAULT_LOG_PREFIX, xorm.DEFAULT_LOG_FLAG, core.LOG_WARNING)) } else { - x.SetLogger(xorm.NewSimpleLogger(logger)) + x.SetLogger(xorm.NewSimpleLogger(fileWriter)) } x.ShowSQL(true) - return Init() + + var gormLogger logger.Writer + if conf.HookMode { + gormLogger = &dbutil.Logger{Writer: fileWriter} + } else { + gormLogger, err = newLogWriter() + if err != nil { + return nil, errors.Wrap(err, "new log writer") + } + } + return Init(gormLogger) } func NewEngine() (err error) { |