mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-05-27 04:07:08 +00:00
fix: correct logging if caller has generics
- If the caller function has generics then
`runtime.FuncForPC(...).Name()` will not show the generic types and
instead collapse it to `[...]`. Remove this suffix from the function
name.
- This fixes an issue where the logging of functions that use generics
such as `db.Find` to be logged as `]()` instead of `Find()`, as the last
dot in `[...]` was being used as a cutoff point.
- Unit test added.
(cherry picked from commit 101efdd2e7
)
This commit is contained in:
parent
6e0f449fb9
commit
ad949404b7
2 changed files with 28 additions and 1 deletions
27
modules/log/logger_impl_test.go
Normal file
27
modules/log/logger_impl_test.go
Normal file
|
@ -0,0 +1,27 @@
|
|||
// Copyright 2025 The Forgejo Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package log
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func testGeneric[T any](log *LoggerImpl, t T) {
|
||||
log.Log(0, INFO, "Just testing the logging of a generic function %v", t)
|
||||
}
|
||||
|
||||
func TestLog(t *testing.T) {
|
||||
bufferWriter := NewEventWriterBuffer("test-buffer", WriterMode{
|
||||
Level: INFO,
|
||||
})
|
||||
|
||||
logger := NewLoggerWithWriters(t.Context(), "test", bufferWriter)
|
||||
|
||||
testGeneric(logger, "I'm the generic value!")
|
||||
logger.Close()
|
||||
|
||||
assert.Contains(t, bufferWriter.Buffer.String(), ".../logger_impl_test.go:13:testGeneric() [I] Just testing the logging of a generic function I'm the generic value!")
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue