|
@@ -10,16 +10,20 @@ import (
|
|
"net/url"
|
|
"net/url"
|
|
"os"
|
|
"os"
|
|
"path"
|
|
"path"
|
|
|
|
+ "path/filepath"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
|
|
|
|
|
|
+ "github.com/pkg/errors"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm"
|
|
|
|
+ "gorm.io/gorm/logger"
|
|
log "unknwon.dev/clog/v2"
|
|
log "unknwon.dev/clog/v2"
|
|
"xorm.io/core"
|
|
"xorm.io/core"
|
|
"xorm.io/xorm"
|
|
"xorm.io/xorm"
|
|
|
|
|
|
"gogs.io/gogs/internal/conf"
|
|
"gogs.io/gogs/internal/conf"
|
|
"gogs.io/gogs/internal/db/migrations"
|
|
"gogs.io/gogs/internal/db/migrations"
|
|
|
|
+ "gogs.io/gogs/internal/dbutil"
|
|
)
|
|
)
|
|
|
|
|
|
// Engine represents a XORM engine or session.
|
|
// Engine represents a XORM engine or session.
|
|
@@ -132,16 +136,21 @@ func SetEngine() (*gorm.DB, error) {
|
|
|
|
|
|
x.SetMapper(core.GonicMapper{})
|
|
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")
|
|
sec := conf.File.Section("log.xorm")
|
|
- logger, err := log.NewFileWriter(path.Join(conf.Log.RootPath, "xorm.log"),
|
|
|
|
|
|
+ fileWriter, err := log.NewFileWriter(logPath,
|
|
log.FileRotationConfig{
|
|
log.FileRotationConfig{
|
|
Rotate: sec.Key("ROTATE").MustBool(true),
|
|
Rotate: sec.Key("ROTATE").MustBool(true),
|
|
Daily: sec.Key("ROTATE_DAILY").MustBool(true),
|
|
Daily: sec.Key("ROTATE_DAILY").MustBool(true),
|
|
MaxSize: sec.Key("MAX_SIZE").MustInt64(100) * 1024 * 1024,
|
|
MaxSize: sec.Key("MAX_SIZE").MustInt64(100) * 1024 * 1024,
|
|
MaxDays: sec.Key("MAX_DAYS").MustInt64(3),
|
|
MaxDays: sec.Key("MAX_DAYS").MustInt64(3),
|
|
- })
|
|
|
|
|
|
+ },
|
|
|
|
+ )
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, fmt.Errorf("create 'xorm.log': %v", err)
|
|
return nil, fmt.Errorf("create 'xorm.log': %v", err)
|
|
}
|
|
}
|
|
@@ -151,12 +160,22 @@ func SetEngine() (*gorm.DB, error) {
|
|
x.SetConnMaxLifetime(time.Second)
|
|
x.SetConnMaxLifetime(time.Second)
|
|
|
|
|
|
if conf.IsProdMode() {
|
|
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 {
|
|
} else {
|
|
- x.SetLogger(xorm.NewSimpleLogger(logger))
|
|
|
|
|
|
+ x.SetLogger(xorm.NewSimpleLogger(fileWriter))
|
|
}
|
|
}
|
|
x.ShowSQL(true)
|
|
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) {
|
|
func NewEngine() (err error) {
|