0
0
mirror of https://github.com/go-gitea/gitea.git synced 2024-12-21 16:45:10 +01:00

Deprecated gopid in log (#32932)

This commit is contained in:
wxiaoguang 2024-12-21 00:20:51 +08:00 committed by GitHub
parent c20642fa99
commit 1e71ad89ce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 27 additions and 88 deletions

View File

@ -13,10 +13,9 @@ import (
type Event struct { type Event struct {
Time time.Time Time time.Time
GoroutinePid string Caller string
Caller string Filename string
Filename string Line int
Line int
Level Level Level Level
@ -218,17 +217,16 @@ func EventFormatTextMessage(mode *WriterMode, event *Event, msgFormat string, ms
} }
if flags&Lgopid == Lgopid { if flags&Lgopid == Lgopid {
if event.GoroutinePid != "" { deprecatedGoroutinePid := "no-gopid" // use a dummy value to avoid breaking the log format
buf = append(buf, '[') buf = append(buf, '[')
if mode.Colorize { if mode.Colorize {
buf = append(buf, ColorBytes(FgHiYellow)...) buf = append(buf, ColorBytes(FgHiYellow)...)
}
buf = append(buf, event.GoroutinePid...)
if mode.Colorize {
buf = append(buf, resetBytes...)
}
buf = append(buf, ']', ' ')
} }
buf = append(buf, deprecatedGoroutinePid...)
if mode.Colorize {
buf = append(buf, resetBytes...)
}
buf = append(buf, ']', ' ')
} }
buf = append(buf, msg...) buf = append(buf, msg...)

View File

@ -24,34 +24,32 @@ func TestItoa(t *testing.T) {
func TestEventFormatTextMessage(t *testing.T) { func TestEventFormatTextMessage(t *testing.T) {
res := EventFormatTextMessage(&WriterMode{Prefix: "[PREFIX] ", Colorize: false, Flags: Flags{defined: true, flags: 0xffffffff}}, res := EventFormatTextMessage(&WriterMode{Prefix: "[PREFIX] ", Colorize: false, Flags: Flags{defined: true, flags: 0xffffffff}},
&Event{ &Event{
Time: time.Date(2020, 1, 2, 3, 4, 5, 6, time.UTC), Time: time.Date(2020, 1, 2, 3, 4, 5, 6, time.UTC),
Caller: "caller", Caller: "caller",
Filename: "filename", Filename: "filename",
Line: 123, Line: 123,
GoroutinePid: "pid", Level: ERROR,
Level: ERROR, Stacktrace: "stacktrace",
Stacktrace: "stacktrace",
}, },
"msg format: %v %v", "arg0", NewColoredValue("arg1", FgBlue), "msg format: %v %v", "arg0", NewColoredValue("arg1", FgBlue),
) )
assert.Equal(t, `[PREFIX] 2020/01/02 03:04:05.000000 filename:123:caller [E] [pid] msg format: arg0 arg1 assert.Equal(t, `[PREFIX] 2020/01/02 03:04:05.000000 filename:123:caller [E] [no-gopid] msg format: arg0 arg1
stacktrace stacktrace
`, string(res)) `, string(res))
res = EventFormatTextMessage(&WriterMode{Prefix: "[PREFIX] ", Colorize: true, Flags: Flags{defined: true, flags: 0xffffffff}}, res = EventFormatTextMessage(&WriterMode{Prefix: "[PREFIX] ", Colorize: true, Flags: Flags{defined: true, flags: 0xffffffff}},
&Event{ &Event{
Time: time.Date(2020, 1, 2, 3, 4, 5, 6, time.UTC), Time: time.Date(2020, 1, 2, 3, 4, 5, 6, time.UTC),
Caller: "caller", Caller: "caller",
Filename: "filename", Filename: "filename",
Line: 123, Line: 123,
GoroutinePid: "pid", Level: ERROR,
Level: ERROR, Stacktrace: "stacktrace",
Stacktrace: "stacktrace",
}, },
"msg format: %v %v", "arg0", NewColoredValue("arg1", FgBlue), "msg format: %v %v", "arg0", NewColoredValue("arg1", FgBlue),
) )
assert.Equal(t, "[PREFIX] \x1b[36m2020/01/02 03:04:05.000000 \x1b[0m\x1b[32mfilename:123:\x1b[32mcaller\x1b[0m \x1b[1;31m[E]\x1b[0m [\x1b[93mpid\x1b[0m] msg format: arg0 \x1b[34marg1\x1b[0m\n\tstacktrace\n\n", string(res)) assert.Equal(t, "[PREFIX] \x1b[36m2020/01/02 03:04:05.000000 \x1b[0m\x1b[32mfilename:123:\x1b[32mcaller\x1b[0m \x1b[1;31m[E]\x1b[0m [\x1b[93mno-gopid\x1b[0m] msg format: arg0 \x1b[34marg1\x1b[0m\n\tstacktrace\n\n", string(res))
} }

View File

@ -30,7 +30,7 @@ const (
LUTC // if Ldate or Ltime is set, use UTC rather than the local time zone LUTC // if Ldate or Ltime is set, use UTC rather than the local time zone
Llevelinitial // Initial character of the provided level in brackets, eg. [I] for info Llevelinitial // Initial character of the provided level in brackets, eg. [I] for info
Llevel // Provided level in brackets [INFO] Llevel // Provided level in brackets [INFO]
Lgopid // the Goroutine-PID of the context Lgopid // the Goroutine-PID of the context, deprecated and it is always a const value
Lmedfile = Lshortfile | Llongfile // last 20 characters of the filename Lmedfile = Lshortfile | Llongfile // last 20 characters of the filename
LstdFlags = Ldate | Ltime | Lmedfile | Lshortfuncname | Llevelinitial // default LstdFlags = Ldate | Ltime | Lmedfile | Lshortfuncname | Llevelinitial // default

View File

@ -1,19 +0,0 @@
// Copyright 2022 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package log
import "unsafe"
//go:linkname runtime_getProfLabel runtime/pprof.runtime_getProfLabel
func runtime_getProfLabel() unsafe.Pointer //nolint
type labelMap map[string]string
func getGoroutineLabels() map[string]string {
l := (*labelMap)(runtime_getProfLabel())
if l == nil {
return nil
}
return *l
}

View File

@ -1,33 +0,0 @@
// Copyright 2022 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package log
import (
"context"
"runtime/pprof"
"testing"
"github.com/stretchr/testify/assert"
)
func Test_getGoroutineLabels(t *testing.T) {
pprof.Do(context.Background(), pprof.Labels(), func(ctx context.Context) {
currentLabels := getGoroutineLabels()
pprof.ForLabels(ctx, func(key, value string) bool {
assert.EqualValues(t, value, currentLabels[key])
return true
})
pprof.Do(ctx, pprof.Labels("Test_getGoroutineLabels", "Test_getGoroutineLabels_child1"), func(ctx context.Context) {
currentLabels := getGoroutineLabels()
pprof.ForLabels(ctx, func(key, value string) bool {
assert.EqualValues(t, value, currentLabels[key])
return true
})
if assert.NotNil(t, currentLabels) {
assert.EqualValues(t, "Test_getGoroutineLabels_child1", currentLabels["Test_getGoroutineLabels"])
}
})
})
}

View File

@ -200,11 +200,6 @@ func (l *LoggerImpl) Log(skip int, level Level, format string, logArgs ...any) {
event.Stacktrace = Stack(skip + 1) event.Stacktrace = Stack(skip + 1)
} }
labels := getGoroutineLabels()
if labels != nil {
event.GoroutinePid = labels["pid"]
}
// get a simple text message without color // get a simple text message without color
msgArgs := make([]any, len(logArgs)) msgArgs := make([]any, len(logArgs))
copy(msgArgs, logArgs) copy(msgArgs, logArgs)