mirror of https://github.com/gogs/gogs.git
cmd/serv: use different log files for ORMs in hook mode (#6361)
parent
8fc4013240
commit
7bc3ee49aa
|
@ -16,6 +16,8 @@ All notable changes to Gogs are documented in this file.
|
|||
|
||||
### Fixed
|
||||
|
||||
- _Regression:_ When running Gogs on Windows, push commits no longer fail on a daily basis with the error "pre-receive hook declined". [#6316](https://github.com/gogs/gogs/issues/6316)
|
||||
|
||||
### Removed
|
||||
|
||||
- ⚠️ Migrations before 0.12 are removed, installations not on 0.12 should upgrade to it to run the migrations and then upgrade to 0.13.
|
||||
|
|
4
go.sum
4
go.sum
|
@ -361,8 +361,6 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5
|
|||
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
|
||||
github.com/unknwon/cae v1.0.1 h1:2sLCLKUntoV4xJ3lov9N+Nya6Z3AfToqJJ0cnao4O7U=
|
||||
github.com/unknwon/cae v1.0.1/go.mod h1:HqpmD2fVq9G1oGEXrXzbgIp51uJ29Hshv41n9ljm+AA=
|
||||
github.com/unknwon/cae v1.0.2 h1:3L8/RCN1ARvD5quyNjU30EdvYkFbxBfnRcIBXugpHlg=
|
||||
github.com/unknwon/cae v1.0.2/go.mod h1:HqpmD2fVq9G1oGEXrXzbgIp51uJ29Hshv41n9ljm+AA=
|
||||
github.com/unknwon/com v0.0.0-20190804042917-757f69c95f3e/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM=
|
||||
|
@ -538,8 +536,6 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie
|
|||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gorm.io/driver/mysql v1.0.1 h1:omJoilUzyrAp0xNoio88lGJCroGdIOen9hq2A/+3ifw=
|
||||
gorm.io/driver/mysql v1.0.1/go.mod h1:KtqSthtg55lFp3S5kUXqlGaelnWpKitn4k1xZTnoiPw=
|
||||
gorm.io/driver/postgres v1.0.0 h1:Yh4jyFQ0a7F+JPU0Gtiam/eKmpT/XFc1FKxotGqc6FM=
|
||||
gorm.io/driver/postgres v1.0.0/go.mod h1:wtMFcOzmuA5QigNsgEIb7O5lhvH1tHAF1RbWmLWV4to=
|
||||
gorm.io/driver/postgres v1.0.1 h1:jRfDNUxpxNrea/97kbcscAQGmiks4UCKAYXsvh4rhOQ=
|
||||
gorm.io/driver/postgres v1.0.1/go.mod h1:pv4dVhHvEVrP7k/UYqdBIllbdbpB5VTz89X1O0uOrCA=
|
||||
gorm.io/driver/sqlite v1.1.3 h1:BYfdVuZB5He/u9dt4qDpZqiqDJ6KhPqs5QUqsr/Eeuc=
|
||||
|
|
|
@ -66,7 +66,7 @@ func runHookPreReceive(c *cli.Context) error {
|
|||
if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 {
|
||||
return nil
|
||||
}
|
||||
setup(c, "hooks/pre-receive.log", true)
|
||||
setup(c, "pre-receive.log", true)
|
||||
|
||||
isWiki := strings.Contains(os.Getenv(db.ENV_REPO_CUSTOM_HOOKS_PATH), ".wiki.git/")
|
||||
|
||||
|
@ -159,7 +159,7 @@ func runHookUpdate(c *cli.Context) error {
|
|||
if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 {
|
||||
return nil
|
||||
}
|
||||
setup(c, "hooks/update.log", false)
|
||||
setup(c, "update.log", false)
|
||||
|
||||
args := c.Args()
|
||||
if len(args) != 3 {
|
||||
|
@ -193,7 +193,7 @@ func runHookPostReceive(c *cli.Context) error {
|
|||
if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 {
|
||||
return nil
|
||||
}
|
||||
setup(c, "hooks/post-receive.log", true)
|
||||
setup(c, "post-receive.log", true)
|
||||
|
||||
// Post-receive hook does more than just gather Git information,
|
||||
// so we need to setup additional services for email notifications.
|
||||
|
|
|
@ -38,7 +38,7 @@ var Serv = cli.Command{
|
|||
// logs error message on the server side. When not in "prod" mode,
|
||||
// error message is also printed to the client for easier debugging.
|
||||
func fail(userMessage, errMessage string, args ...interface{}) {
|
||||
fmt.Fprintln(os.Stderr, "Gogs:", userMessage)
|
||||
_, _ = fmt.Fprintln(os.Stderr, "Gogs:", userMessage)
|
||||
|
||||
if len(errMessage) > 0 {
|
||||
if !conf.IsProdMode() {
|
||||
|
@ -47,10 +47,11 @@ func fail(userMessage, errMessage string, args ...interface{}) {
|
|||
log.Error(errMessage, args...)
|
||||
}
|
||||
|
||||
log.Stop()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func setup(c *cli.Context, logPath string, connectDB bool) {
|
||||
func setup(c *cli.Context, logFile string, connectDB bool) {
|
||||
conf.HookMode = true
|
||||
|
||||
var customConf string
|
||||
|
@ -73,7 +74,7 @@ func setup(c *cli.Context, logPath string, connectDB bool) {
|
|||
|
||||
err = log.NewFile(log.FileConfig{
|
||||
Level: level,
|
||||
Filename: filepath.Join(conf.Log.RootPath, logPath),
|
||||
Filename: filepath.Join(conf.Log.RootPath, "hooks", logFile),
|
||||
FileRotationConfig: log.FileRotationConfig{
|
||||
Rotate: true,
|
||||
Daily: true,
|
||||
|
|
|
@ -145,12 +145,7 @@ var Tables = []interface{}{
|
|||
new(LFSObject), new(LoginSource),
|
||||
}
|
||||
|
||||
func Init() (*gorm.DB, error) {
|
||||
w, err := newLogWriter()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "new log writer")
|
||||
}
|
||||
|
||||
func Init(w logger.Writer) (*gorm.DB, error) {
|
||||
level := logger.Info
|
||||
if conf.IsProdMode() {
|
||||
level = logger.Warn
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue