feat: add fields with logx methods, support using third party logging libs. (#1847)
* backup * simplify * chore: remove unused pool * chore: fix lint errors * chore: use strings.Builder instead of bytes.Buffer * test: add more tests * chore: fix reviewdog * test: fix data race * feat: make logger customizable * chore: fix reviewdog * test: fix fails * chore: fix set writer twice * chore: use context instead of golang.org context * chore: specify uint32 for level types
This commit is contained in:
@@ -1,109 +1,121 @@
|
||||
package internal
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
const content = "foo"
|
||||
|
||||
func TestLoggerError(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Error(content)
|
||||
assert.Contains(t, builder.String(), content)
|
||||
assert.Contains(t, w.String(), content)
|
||||
}
|
||||
|
||||
func TestLoggerErrorf(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Errorf(content)
|
||||
assert.Contains(t, builder.String(), content)
|
||||
assert.Contains(t, w.String(), content)
|
||||
}
|
||||
|
||||
func TestLoggerErrorln(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Errorln(content)
|
||||
assert.Contains(t, builder.String(), content)
|
||||
assert.Contains(t, w.String(), content)
|
||||
}
|
||||
|
||||
func TestLoggerFatal(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Fatal(content)
|
||||
assert.Contains(t, builder.String(), content)
|
||||
assert.Contains(t, w.String(), content)
|
||||
}
|
||||
|
||||
func TestLoggerFatalf(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Fatalf(content)
|
||||
assert.Contains(t, builder.String(), content)
|
||||
assert.Contains(t, w.String(), content)
|
||||
}
|
||||
|
||||
func TestLoggerFatalln(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Fatalln(content)
|
||||
assert.Contains(t, builder.String(), content)
|
||||
assert.Contains(t, w.String(), content)
|
||||
}
|
||||
|
||||
func TestLoggerInfo(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Info(content)
|
||||
assert.Empty(t, builder.String())
|
||||
assert.Empty(t, w.String())
|
||||
}
|
||||
|
||||
func TestLoggerInfof(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Infof(content)
|
||||
assert.Empty(t, builder.String())
|
||||
assert.Empty(t, w.String())
|
||||
}
|
||||
|
||||
func TestLoggerWarning(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Warning(content)
|
||||
assert.Empty(t, builder.String())
|
||||
assert.Empty(t, w.String())
|
||||
}
|
||||
|
||||
func TestLoggerInfoln(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Infoln(content)
|
||||
assert.Empty(t, builder.String())
|
||||
assert.Empty(t, w.String())
|
||||
}
|
||||
|
||||
func TestLoggerWarningf(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Warningf(content)
|
||||
assert.Empty(t, builder.String())
|
||||
assert.Empty(t, w.String())
|
||||
}
|
||||
|
||||
func TestLoggerWarningln(t *testing.T) {
|
||||
var builder strings.Builder
|
||||
log.SetOutput(&builder)
|
||||
w, restore := injectLog()
|
||||
defer restore()
|
||||
|
||||
logger := new(Logger)
|
||||
logger.Warningln(content)
|
||||
assert.Empty(t, builder.String())
|
||||
assert.Empty(t, w.String())
|
||||
}
|
||||
|
||||
func TestLogger_V(t *testing.T) {
|
||||
@@ -113,3 +125,15 @@ func TestLogger_V(t *testing.T) {
|
||||
// grpclog.infoLog
|
||||
assert.False(t, logger.V(0))
|
||||
}
|
||||
|
||||
func injectLog() (r *strings.Builder, restore func()) {
|
||||
var buf strings.Builder
|
||||
w := logx.NewWriter(&buf)
|
||||
o := logx.Reset()
|
||||
logx.SetWriter(w)
|
||||
|
||||
return &buf, func() {
|
||||
logx.Reset()
|
||||
logx.SetWriter(o)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user