Skip to content

Commit 59497de

Browse files
committed
fix log doesn't show useful filename&lineno
1 parent af8d793 commit 59497de

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

errors.go

+17-1
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,29 @@ var (
3737
errBadConnNoWrite = errors.New("bad connection")
3838
)
3939

40-
var defaultLogger = Logger(log.New(os.Stderr, "[mysql] ", log.Ldate|log.Ltime|log.Lshortfile))
40+
var defaultLogger = StdLogger(log.New(os.Stderr, "[mysql] ", log.Ldate|log.Ltime|log.Lshortfile))
4141

4242
// Logger is used to log critical error messages.
4343
type Logger interface {
4444
Print(v ...any)
4545
}
4646

47+
// stdLog wraps log.Logger to adjust calldepth.
48+
type stdLog struct {
49+
l *log.Logger
50+
}
51+
52+
func (s *stdLog) Print(v ...any) {
53+
// log.Logger.Print() uses a calldepth of 2.
54+
// We need to skip one more frame for mysqlConn.log().
55+
_ = s.l.Output(3, fmt.Sprint(v...))
56+
}
57+
58+
// StdLogger creates a Logger that wraps a log.Logger.
59+
func StdLogger(l *log.Logger) Logger {
60+
return &stdLog{l}
61+
}
62+
4763
// NopLogger is a nop implementation of the Logger interface.
4864
type NopLogger struct{}
4965

0 commit comments

Comments
 (0)