1
0
mirror of https://github.com/redis/go-redis.git synced 2025-09-05 20:24:00 +03:00
Files
go-redis/internal/log.go
Nedyalko Dyakov f329fd5630 remove some logs
2025-08-29 21:10:08 +03:00

69 lines
1.5 KiB
Go

package internal
import (
"context"
"fmt"
"log"
"os"
"strings"
"github.com/redis/go-redis/v9/logging"
)
// LogLevel is an alias to the public logging.LogLevel for internal use
type LogLevel = logging.LogLevel
// Log level constants for internal use
const (
LogLevelError = logging.LogLevelError
LogLevelWarn = logging.LogLevelWarn
LogLevelInfo = logging.LogLevelInfo
LogLevelDebug = logging.LogLevelDebug
)
// TODO (ned): Revisit logging
// Add more standardized approach with log levels and configurability
type Logging interface {
Printf(ctx context.Context, format string, v ...interface{})
}
type logger struct {
log *log.Logger
}
func (l *logger) Printf(ctx context.Context, format string, v ...interface{}) {
_ = l.log.Output(2, fmt.Sprintf(format, v...))
}
// Logger calls Output to print to the stderr.
// Arguments are handled in the manner of fmt.Print.
var Logger Logging = &logger{
log: log.New(os.Stderr, "redis: ", log.LstdFlags|log.Lshortfile),
}
func NewFilterLogger(substr []string) Logging {
l := &logger{
log: log.New(os.Stderr, "redis: ", log.LstdFlags|log.Lshortfile),
}
return &filterLogger{logger: l, substr: substr}
}
type filterLogger struct {
logger Logging
substr []string
}
func (l *filterLogger) Printf(ctx context.Context, format string, v ...interface{}) {
msg := fmt.Sprintf(format, v...)
for _, substr := range l.substr {
if strings.Contains(msg, substr) {
return
}
}
if l.logger != nil {
l.logger.Printf(ctx, format, v...)
return
}
}