Skip to content

Commit d66db5e

Browse files
committed
Merge branch 'main' into notif3
* main: Improvements for action detail page (go-gitea#24718) Add CRAN package registry (go-gitea#22331) Fix regression: access log template, gitea manager cli command (go-gitea#24838) Merge message template support for rebase without merge commit (go-gitea#22669) [skip ci] Updated licenses and gitignores Support wildcard in email domain allow/block list (go-gitea#24831) Change `--font-weight-bold` to `--font-weight-semibold` and 600 value, introduce new font weight variables (go-gitea#24827) Rewrite logger system (go-gitea#24726) Support Copy Link for video attachments (go-gitea#24833)
2 parents 49e710c + da461b5 commit d66db5e

File tree

180 files changed

+5566
-5526
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

180 files changed

+5566
-5526
lines changed

.stylelintrc.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ rules:
9696
property-no-vendor-prefix: null
9797
rule-empty-line-before: null
9898
rule-selector-property-disallowed-list: null
99-
scale-unlimited/declaration-strict-value: [[color, background-color, border-color], {ignoreValues: /^(inherit|transparent|unset|initial|currentcolor|none)$/, ignoreFunctions: false}]
99+
scale-unlimited/declaration-strict-value: [[color, background-color, border-color, font-weight], {ignoreValues: /^(inherit|transparent|unset|initial|currentcolor|none)$/, ignoreFunctions: false}]
100100
selector-attribute-name-disallowed-list: null
101101
selector-attribute-operator-allowed-list: null
102102
selector-attribute-operator-disallowed-list: null

cmd/cmd.go

+16-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"context"
1010
"errors"
1111
"fmt"
12+
"io"
1213
"os"
1314
"os/signal"
1415
"strings"
@@ -59,7 +60,7 @@ func confirm() (bool, error) {
5960
func initDB(ctx context.Context) error {
6061
setting.Init(&setting.Options{})
6162
setting.LoadDBSetting()
62-
setting.InitSQLLog(false)
63+
setting.InitSQLLoggersForCli(log.INFO)
6364

6465
if setting.Database.Type == "" {
6566
log.Fatal(`Database settings are missing from the configuration file: %q.
@@ -93,3 +94,17 @@ func installSignals() (context.Context, context.CancelFunc) {
9394

9495
return ctx, cancel
9596
}
97+
98+
func setupConsoleLogger(level log.Level, colorize bool, out io.Writer) {
99+
if out != os.Stdout && out != os.Stderr {
100+
panic("setupConsoleLogger can only be used with os.Stdout or os.Stderr")
101+
}
102+
103+
writeMode := log.WriterMode{
104+
Level: level,
105+
Colorize: colorize,
106+
WriterOption: log.WriterConsoleOption{Stderr: out == os.Stderr},
107+
}
108+
writer := log.NewEventWriterConsole("console-default", writeMode)
109+
log.GetManager().GetLogger(log.DEFAULT).RemoveAllWriters().AddWriters(writer)
110+
}

cmd/doctor.go

+31-59
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
package cmd
55

66
import (
7-
"errors"
87
"fmt"
98
golog "log"
109
"os"
10+
"path/filepath"
1111
"strings"
1212
"text/tabwriter"
1313

@@ -82,23 +82,25 @@ You should back-up your database before doing this and ensure that your database
8282
}
8383

8484
func runRecreateTable(ctx *cli.Context) error {
85+
stdCtx, cancel := installSignals()
86+
defer cancel()
87+
8588
// Redirect the default golog to here
8689
golog.SetFlags(0)
8790
golog.SetPrefix("")
88-
golog.SetOutput(log.NewLoggerAsWriter("INFO", log.GetLogger(log.DEFAULT)))
91+
golog.SetOutput(log.LoggerToWriter(log.GetLogger(log.DEFAULT).Info))
8992

93+
debug := ctx.Bool("debug")
9094
setting.Init(&setting.Options{})
9195
setting.LoadDBSetting()
9296

93-
setting.Log.EnableXORMLog = ctx.Bool("debug")
94-
setting.Database.LogSQL = ctx.Bool("debug")
95-
// FIXME: don't use CfgProvider directly
96-
setting.CfgProvider.Section("log").Key("XORM").SetValue(",")
97-
98-
setting.InitSQLLog(!ctx.Bool("debug"))
99-
stdCtx, cancel := installSignals()
100-
defer cancel()
97+
if debug {
98+
setting.InitSQLLoggersForCli(log.DEBUG)
99+
} else {
100+
setting.InitSQLLoggersForCli(log.INFO)
101+
}
101102

103+
setting.Database.LogSQL = debug
102104
if err := db.InitEngine(stdCtx); err != nil {
103105
fmt.Println(err)
104106
fmt.Println("Check if you are using the right config file. You can use a --config directive to specify one.")
@@ -125,67 +127,49 @@ func runRecreateTable(ctx *cli.Context) error {
125127
})
126128
}
127129

128-
func setDoctorLogger(ctx *cli.Context) {
130+
func setupDoctorDefaultLogger(ctx *cli.Context, colorize bool) {
131+
// Silence the default loggers
132+
setupConsoleLogger(log.FATAL, log.CanColorStderr, os.Stderr)
133+
129134
logFile := ctx.String("log-file")
130135
if !ctx.IsSet("log-file") {
131136
logFile = "doctor.log"
132137
}
133-
colorize := log.CanColorStdout
134-
if ctx.IsSet("color") {
135-
colorize = ctx.Bool("color")
136-
}
137138

138139
if len(logFile) == 0 {
139-
log.NewLogger(1000, "doctor", "console", fmt.Sprintf(`{"level":"NONE","stacktracelevel":"NONE","colorize":%t}`, colorize))
140+
// if no doctor log-file is set, do not show any log from default logger
140141
return
141142
}
142143

143-
defer func() {
144-
recovered := recover()
145-
if recovered == nil {
146-
return
147-
}
148-
149-
err, ok := recovered.(error)
150-
if !ok {
151-
panic(recovered)
152-
}
153-
if errors.Is(err, os.ErrPermission) {
154-
fmt.Fprintf(os.Stderr, "ERROR: Unable to write logs to provided file due to permissions error: %s\n %v\n", logFile, err)
155-
} else {
156-
fmt.Fprintf(os.Stderr, "ERROR: Unable to write logs to provided file: %s\n %v\n", logFile, err)
157-
}
158-
fmt.Fprintf(os.Stderr, "WARN: Logging will be disabled\n Use `--log-file` to configure log file location\n")
159-
log.NewLogger(1000, "doctor", "console", fmt.Sprintf(`{"level":"NONE","stacktracelevel":"NONE","colorize":%t}`, colorize))
160-
}()
161-
162144
if logFile == "-" {
163-
log.NewLogger(1000, "doctor", "console", fmt.Sprintf(`{"level":"trace","stacktracelevel":"NONE","colorize":%t}`, colorize))
145+
setupConsoleLogger(log.TRACE, colorize, os.Stdout)
164146
} else {
165-
log.NewLogger(1000, "doctor", "file", fmt.Sprintf(`{"filename":%q,"level":"trace","stacktracelevel":"NONE"}`, logFile))
147+
logFile, _ = filepath.Abs(logFile)
148+
writeMode := log.WriterMode{Level: log.TRACE, WriterOption: log.WriterFileOption{FileName: logFile}}
149+
writer, err := log.NewEventWriter("console-to-file", "file", writeMode)
150+
if err != nil {
151+
log.FallbackErrorf("unable to create file log writer: %v", err)
152+
return
153+
}
154+
log.GetManager().GetLogger(log.DEFAULT).RemoveAllWriters().AddWriters(writer)
166155
}
167156
}
168157

169158
func runDoctor(ctx *cli.Context) error {
170159
stdCtx, cancel := installSignals()
171160
defer cancel()
172161

173-
// Silence the default loggers
174-
log.DelNamedLogger("console")
175-
log.DelNamedLogger(log.DEFAULT)
176-
177-
// Now setup our own
178-
setDoctorLogger(ctx)
179-
180162
colorize := log.CanColorStdout
181163
if ctx.IsSet("color") {
182164
colorize = ctx.Bool("color")
183165
}
184166

185-
// Finally redirect the default golog to here
167+
setupDoctorDefaultLogger(ctx, colorize)
168+
169+
// Finally redirect the default golang's log to here
186170
golog.SetFlags(0)
187171
golog.SetPrefix("")
188-
golog.SetOutput(log.NewLoggerAsWriter("INFO", log.GetLogger(log.DEFAULT)))
172+
golog.SetOutput(log.LoggerToWriter(log.GetLogger(log.DEFAULT).Info))
189173

190174
if ctx.IsSet("list") {
191175
w := tabwriter.NewWriter(os.Stdout, 0, 8, 1, '\t', 0)
@@ -233,17 +217,5 @@ func runDoctor(ctx *cli.Context) error {
233217
}
234218
}
235219

236-
// Now we can set up our own logger to return information about what the doctor is doing
237-
if err := log.NewNamedLogger("doctorouter",
238-
0,
239-
"console",
240-
"console",
241-
fmt.Sprintf(`{"level":"INFO","stacktracelevel":"NONE","colorize":%t,"flags":-1}`, colorize)); err != nil {
242-
fmt.Println(err)
243-
return err
244-
}
245-
246-
logger := log.GetLogger("doctorouter")
247-
defer logger.Close()
248-
return doctor.RunChecks(stdCtx, logger, ctx.Bool("fix"), checks)
220+
return doctor.RunChecks(stdCtx, colorize, ctx.Bool("fix"), checks)
249221
}

cmd/dump.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,7 @@ func runDump(ctx *cli.Context) error {
172172
outType := ctx.String("type")
173173
if fileName == "-" {
174174
file = os.Stdout
175-
err := log.DelLogger("console")
176-
if err != nil {
177-
fatal("Deleting default logger failed. Can not write to stdout: %v", err)
178-
}
175+
setupConsoleLogger(log.FATAL, log.CanColorStderr, os.Stderr)
179176
} else {
180177
for _, suffix := range outputTypeEnum.Enum {
181178
if strings.HasSuffix(fileName, "."+suffix) {

cmd/embedded.go

+1-7
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,7 @@ type assetFile struct {
9797
}
9898

9999
func initEmbeddedExtractor(c *cli.Context) error {
100-
// FIXME: there is a bug, if the user runs `gitea embedded` with a different user or root,
101-
// The setting.Init (loadRunModeFrom) will fail and do log.Fatal
102-
// But the console logger has been deleted, so nothing is printed, the user sees nothing and Gitea just exits.
103-
104-
// Silence the console logger
105-
log.DelNamedLogger("console")
106-
log.DelNamedLogger(log.DEFAULT)
100+
setupConsoleLogger(log.ERROR, log.CanColorStderr, os.Stderr)
107101

108102
// Read configuration file
109103
setting.Init(&setting.Options{

0 commit comments

Comments
 (0)