[F3] add util.Logger
This commit is contained in:
parent
f3b487f112
commit
79741e56c7
4 changed files with 190 additions and 3 deletions
2
go.mod
2
go.mod
|
@ -117,7 +117,7 @@ require (
|
|||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
|
||||
gopkg.in/ini.v1 v1.67.0
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
lab.forgefriends.org/friendlyforgeformat/gof3 v1.0.1-0.20240122075607-5d314b108abb
|
||||
lab.forgefriends.org/friendlyforgeformat/gof3 v1.0.1-0.20240126110429-9f9956505f5c
|
||||
mvdan.cc/xurls/v2 v2.5.0
|
||||
strk.kbt.io/projects/go/libravatar v0.0.0-20191008002943-06d1c002b251
|
||||
xorm.io/builder v0.3.13
|
||||
|
|
4
go.sum
4
go.sum
|
@ -1291,8 +1291,8 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
|
|||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
lab.forgefriends.org/friendlyforgeformat/gof3 v1.0.1-0.20240122075607-5d314b108abb h1:kS8Jkycu2kggyVggjxC7I24iyDLOB2WqAJ8DlV21Fis=
|
||||
lab.forgefriends.org/friendlyforgeformat/gof3 v1.0.1-0.20240122075607-5d314b108abb/go.mod h1:LxfG8cikPNzmy77CCYM4b9t/NbFefGJ1rUZujqDNa8Y=
|
||||
lab.forgefriends.org/friendlyforgeformat/gof3 v1.0.1-0.20240126110429-9f9956505f5c h1:mEA2msGwZbjYU7ScuasARkcQJABvuRSbFakJ4Rz/n4A=
|
||||
lab.forgefriends.org/friendlyforgeformat/gof3 v1.0.1-0.20240126110429-9f9956505f5c/go.mod h1:LxfG8cikPNzmy77CCYM4b9t/NbFefGJ1rUZujqDNa8Y=
|
||||
lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI=
|
||||
lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
|
||||
modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw=
|
||||
|
|
97
services/f3/util/logger.go
Normal file
97
services/f3/util/logger.go
Normal file
|
@ -0,0 +1,97 @@
|
|||
// Copyright Earl Warren <contact@earl-warren.org>
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
forgejo_log "code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/migration"
|
||||
|
||||
"lab.forgefriends.org/friendlyforgeformat/gof3/logger"
|
||||
)
|
||||
|
||||
type f3Logger struct {
|
||||
m migration.Messenger
|
||||
l forgejo_log.Logger
|
||||
}
|
||||
|
||||
func (o *f3Logger) Message(message string, args ...any) {
|
||||
if o.m != nil {
|
||||
o.m(message, args...)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *f3Logger) SetLevel(level logger.Level) {
|
||||
}
|
||||
|
||||
func forgejoLevelToF3Level(level forgejo_log.Level) logger.Level {
|
||||
switch level {
|
||||
case forgejo_log.TRACE:
|
||||
return logger.Trace
|
||||
case forgejo_log.DEBUG:
|
||||
return logger.Debug
|
||||
case forgejo_log.INFO:
|
||||
return logger.Info
|
||||
case forgejo_log.WARN:
|
||||
return logger.Warn
|
||||
case forgejo_log.ERROR:
|
||||
return logger.Error
|
||||
case forgejo_log.FATAL:
|
||||
return logger.Fatal
|
||||
default:
|
||||
panic(fmt.Errorf("unexpected level %d", level))
|
||||
}
|
||||
}
|
||||
|
||||
func f3LevelToForgejoLevel(level logger.Level) forgejo_log.Level {
|
||||
switch level {
|
||||
case logger.Trace:
|
||||
return forgejo_log.TRACE
|
||||
case logger.Debug:
|
||||
return forgejo_log.DEBUG
|
||||
case logger.Info:
|
||||
return forgejo_log.INFO
|
||||
case logger.Warn:
|
||||
return forgejo_log.WARN
|
||||
case logger.Error:
|
||||
return forgejo_log.ERROR
|
||||
case logger.Fatal:
|
||||
return forgejo_log.FATAL
|
||||
default:
|
||||
panic(fmt.Errorf("unexpected level %d", level))
|
||||
}
|
||||
}
|
||||
|
||||
func (o *f3Logger) GetLevel() logger.Level {
|
||||
return forgejoLevelToF3Level(o.l.GetLevel())
|
||||
}
|
||||
|
||||
func (o *f3Logger) Log(skip int, level logger.Level, format string, args ...any) {
|
||||
o.l.Log(skip+1, f3LevelToForgejoLevel(level), format, args...)
|
||||
}
|
||||
|
||||
func (o *f3Logger) Trace(message string, args ...any) {
|
||||
o.l.Log(1, forgejo_log.TRACE, message, args...)
|
||||
}
|
||||
|
||||
func (o *f3Logger) Debug(message string, args ...any) {
|
||||
o.l.Log(1, forgejo_log.DEBUG, message, args...)
|
||||
}
|
||||
func (o *f3Logger) Info(message string, args ...any) { o.l.Log(1, forgejo_log.INFO, message, args...) }
|
||||
func (o *f3Logger) Warn(message string, args ...any) { o.l.Log(1, forgejo_log.WARN, message, args...) }
|
||||
func (o *f3Logger) Error(message string, args ...any) {
|
||||
o.l.Log(1, forgejo_log.ERROR, message, args...)
|
||||
}
|
||||
|
||||
func (o *f3Logger) Fatal(message string, args ...any) {
|
||||
o.l.Log(1, forgejo_log.FATAL, message, args...)
|
||||
}
|
||||
|
||||
func NewF3Logger(messenger migration.Messenger, logger forgejo_log.Logger) logger.Interface {
|
||||
return &f3Logger{
|
||||
m: messenger,
|
||||
l: logger,
|
||||
}
|
||||
}
|
90
services/f3/util/logger_test.go
Normal file
90
services/f3/util/logger_test.go
Normal file
|
@ -0,0 +1,90 @@
|
|||
// Copyright Earl Warren <contact@earl-warren.org>
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
forgejo_log "code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/test"
|
||||
|
||||
"lab.forgefriends.org/friendlyforgeformat/gof3/logger"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestF3UtilMessage(t *testing.T) {
|
||||
expected := "EXPECTED MESSAGE"
|
||||
var actual string
|
||||
logger := NewF3Logger(func(message string, args ...any) {
|
||||
actual = fmt.Sprintf(message, args...)
|
||||
}, nil)
|
||||
logger.Message("EXPECTED %s", "MESSAGE")
|
||||
assert.EqualValues(t, expected, actual)
|
||||
}
|
||||
|
||||
func TestF3UtilLogger(t *testing.T) {
|
||||
for _, testCase := range []struct {
|
||||
level logger.Level
|
||||
call func(logger.MessageInterface, string, ...any)
|
||||
}{
|
||||
{level: logger.Trace, call: func(logger logger.MessageInterface, message string, args ...any) { logger.Trace(message, args...) }},
|
||||
{level: logger.Debug, call: func(logger logger.MessageInterface, message string, args ...any) { logger.Debug(message, args...) }},
|
||||
{level: logger.Info, call: func(logger logger.MessageInterface, message string, args ...any) { logger.Info(message, args...) }},
|
||||
{level: logger.Warn, call: func(logger logger.MessageInterface, message string, args ...any) { logger.Warn(message, args...) }},
|
||||
{level: logger.Error, call: func(logger logger.MessageInterface, message string, args ...any) { logger.Error(message, args...) }},
|
||||
{level: logger.Fatal, call: func(logger logger.MessageInterface, message string, args ...any) { logger.Fatal(message, args...) }},
|
||||
} {
|
||||
t.Run(testCase.level.String(), func(t *testing.T) {
|
||||
testLoggerCase(t, testCase.level, testCase.call)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func testLoggerCase(t *testing.T, level logger.Level, loggerFunc func(logger.MessageInterface, string, ...any)) {
|
||||
lc, cleanup := test.NewLogChecker(forgejo_log.DEFAULT, f3LevelToForgejoLevel(level))
|
||||
defer cleanup()
|
||||
stopMark := "STOP"
|
||||
lc.StopMark(stopMark)
|
||||
filtered := []string{
|
||||
"MESSAGE HERE",
|
||||
}
|
||||
moreVerbose := logger.MoreVerbose(level)
|
||||
if moreVerbose != nil {
|
||||
filtered = append(filtered, "MESSAGE MORE VERBOSE")
|
||||
}
|
||||
lessVerbose := logger.LessVerbose(level)
|
||||
if lessVerbose != nil {
|
||||
filtered = append(filtered, "MESSAGE LESS VERBOSE")
|
||||
}
|
||||
lc.Filter(filtered...)
|
||||
|
||||
logger := NewF3Logger(nil, forgejo_log.GetLogger(forgejo_log.DEFAULT))
|
||||
loggerFunc(logger, "MESSAGE %s", "HERE")
|
||||
if moreVerbose != nil {
|
||||
logger.Log(1, *moreVerbose, "MESSAGE %s", "MORE VERBOSE")
|
||||
}
|
||||
if lessVerbose != nil {
|
||||
logger.Log(1, *lessVerbose, "MESSAGE %s", "LESS VERBOSE")
|
||||
}
|
||||
logger.Fatal(stopMark)
|
||||
|
||||
logFiltered, logStopped := lc.Check(5 * time.Second)
|
||||
assert.True(t, logStopped)
|
||||
i := 0
|
||||
assert.True(t, logFiltered[i], filtered[i])
|
||||
if moreVerbose != nil {
|
||||
i++
|
||||
require.True(t, len(logFiltered) > i)
|
||||
assert.False(t, logFiltered[i], filtered[i])
|
||||
}
|
||||
if lessVerbose != nil {
|
||||
i++
|
||||
require.True(t, len(logFiltered) > i)
|
||||
assert.True(t, logFiltered[i], filtered[i])
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue