Jelajahi Sumber

Add NewLoggingConnFilter

白维 7 tahun lalu
induk
melakukan
2cd21d9966
1 mengubah file dengan 13 tambahan dan 1 penghapusan
  1. 13 1
      redis/log.go

+ 13 - 1
redis/log.go

@@ -30,13 +30,22 @@ func NewLoggingConn(conn Conn, logger *log.Logger, prefix string) Conn {
 	if prefix != "" {
 		prefix = prefix + "."
 	}
-	return &loggingConn{conn, logger, prefix}
+	return &loggingConn{conn, logger, prefix, nil}
+}
+
+//NewLoggingConnFilter returns a logging wrapper around a connection and a filter function.
+func NewLoggingConnFilter(conn Conn, logger *log.Logger, prefix string, skip func(cmdName string) bool) Conn {
+	if prefix != "" {
+		prefix = prefix + "."
+	}
+	return &loggingConn{conn, logger, prefix, skip}
 }
 
 type loggingConn struct {
 	Conn
 	logger *log.Logger
 	prefix string
+	skip   func(cmdName string) bool
 }
 
 func (c *loggingConn) Close() error {
@@ -85,6 +94,9 @@ func (c *loggingConn) printValue(buf *bytes.Buffer, v interface{}) {
 }
 
 func (c *loggingConn) print(method, commandName string, args []interface{}, reply interface{}, err error) {
+	if c.skip != nil && c.skip(commandName) {
+		return
+	}
 	var buf bytes.Buffer
 	fmt.Fprintf(&buf, "%s%s(", c.prefix, method)
 	if method != "Receive" {