mirror of
https://github.com/gin-gonic/gin.git
synced 2025-10-16 05:16:35 +08:00
Merge 8dbee163b27a5202c73a920d79129edf179de444 into a481ee2897af1e368de5c919fbeb21b89aa26fc7
This commit is contained in:
commit
3e501869c6
@ -11,6 +11,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin/internal/bytesconv"
|
||||||
"github.com/mattn/go-isatty"
|
"github.com/mattn/go-isatty"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -37,7 +38,7 @@ var consoleColorMode = autoColor
|
|||||||
|
|
||||||
// LoggerConfig defines the config for Logger middleware.
|
// LoggerConfig defines the config for Logger middleware.
|
||||||
type LoggerConfig struct {
|
type LoggerConfig struct {
|
||||||
// Optional. Default value is gin.defaultLogFormatter
|
// Formatter is optional, the default value is gin.defaultLogFormatter
|
||||||
Formatter LogFormatter
|
Formatter LogFormatter
|
||||||
|
|
||||||
// Output is a writer where logs are written.
|
// Output is a writer where logs are written.
|
||||||
@ -266,7 +267,9 @@ func LoggerWithConfig(conf LoggerConfig) HandlerFunc {
|
|||||||
|
|
||||||
param.Path = path
|
param.Path = path
|
||||||
|
|
||||||
fmt.Fprint(out, formatter(param))
|
if _, err := out.Write(bytesconv.StringToBytes(formatter(param))); err != nil {
|
||||||
|
debugPrintError(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -147,6 +147,15 @@ func TestLoggerWithConfig(t *testing.T) {
|
|||||||
assert.Contains(t, buffer.String(), "/notfound")
|
assert.Contains(t, buffer.String(), "/notfound")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLoggerWithConfigWriteError(t *testing.T) {
|
||||||
|
w := &mockErrWriter{}
|
||||||
|
router := New()
|
||||||
|
router.Use(LoggerWithConfig(LoggerConfig{Output: w}))
|
||||||
|
router.GET("/example", func(c *Context) {})
|
||||||
|
PerformRequest(router, "GET", "/example?a=100")
|
||||||
|
assert.True(t, w.triggerErrorWrite)
|
||||||
|
}
|
||||||
|
|
||||||
func TestLoggerWithFormatter(t *testing.T) {
|
func TestLoggerWithFormatter(t *testing.T) {
|
||||||
buffer := new(strings.Builder)
|
buffer := new(strings.Builder)
|
||||||
|
|
||||||
@ -434,3 +443,12 @@ func TestForceConsoleColor(t *testing.T) {
|
|||||||
// reset console color mode.
|
// reset console color mode.
|
||||||
consoleColorMode = autoColor
|
consoleColorMode = autoColor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type mockErrWriter struct {
|
||||||
|
triggerErrorWrite bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *mockErrWriter) Write(p []byte) (n int, err error) {
|
||||||
|
w.triggerErrorWrite = true
|
||||||
|
return 0, errors.New("test error writer")
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user