Use interface for logging instead of log15 directly

logger-interface
Jack Christensen 2014-07-14 09:42:52 -05:00
parent 311c332fdc
commit 98109c57bb
3 changed files with 31 additions and 9 deletions

View File

@ -14,7 +14,6 @@ import (
"encoding/hex" "encoding/hex"
"errors" "errors"
"fmt" "fmt"
log "gopkg.in/inconshreveable/log15.v2"
"io" "io"
"net" "net"
"net/url" "net/url"
@ -34,7 +33,7 @@ type ConnConfig struct {
User string // default: OS user name User string // default: OS user name
Password string Password string
TLSConfig *tls.Config // config for TLS connection -- nil disables TLS TLSConfig *tls.Config // config for TLS connection -- nil disables TLS
Logger log.Logger Logger Logger
} }
// Conn is a PostgreSQL connection handle. It is not safe for concurrent usage. // Conn is a PostgreSQL connection handle. It is not safe for concurrent usage.
@ -53,7 +52,7 @@ type Conn struct {
notifications []*Notification notifications []*Notification
alive bool alive bool
causeOfDeath error causeOfDeath error
logger log.Logger logger Logger
rows Rows rows Rows
mr msgReader mr msgReader
} }
@ -100,8 +99,7 @@ func Connect(config ConnConfig) (c *Conn, err error) {
if c.config.Logger != nil { if c.config.Logger != nil {
c.logger = c.config.Logger c.logger = c.config.Logger
} else { } else {
c.logger = log.New() c.logger = &DiscardLogger{}
c.logger.SetHandler(log.DiscardHandler())
} }
if c.config.User == "" { if c.config.User == "" {

View File

@ -2,7 +2,6 @@ package pgx
import ( import (
"errors" "errors"
log "gopkg.in/inconshreveable/log15.v2"
"sync" "sync"
) )
@ -19,7 +18,7 @@ type ConnPool struct {
config ConnConfig // config used when establishing connection config ConnConfig // config used when establishing connection
maxConnections int maxConnections int
afterConnect func(*Conn) error afterConnect func(*Conn) error
logger log.Logger logger Logger
} }
type ConnPoolStat struct { type ConnPoolStat struct {
@ -45,8 +44,7 @@ func NewConnPool(config ConnPoolConfig) (p *ConnPool, err error) {
if config.Logger != nil { if config.Logger != nil {
p.logger = config.Logger p.logger = config.Logger
} else { } else {
p.logger = log.New() p.logger = &DiscardLogger{}
p.logger.SetHandler(log.DiscardHandler())
} }
p.allConnections = make([]*Conn, 0, p.maxConnections) p.allConnections = make([]*Conn, 0, p.maxConnections)

26
logger.go Normal file
View File

@ -0,0 +1,26 @@
package pgx
// Logger is the interface used to get logging from pgx internals.
// https://github.com/inconshreveable/log15 is the recommended logging package.
// This logging interface was extracted from there. However, it should be simple
// to adapt any logger to this interface.
type Logger interface {
// New returns a new Logger that has this logger's context plus the given context
New(ctx ...interface{}) Logger
// Log a message at the given level with context key/value pairs
Debug(msg string, ctx ...interface{})
Info(msg string, ctx ...interface{})
Warn(msg string, ctx ...interface{})
Error(msg string, ctx ...interface{})
Crit(msg string, ctx ...interface{})
}
type DiscardLogger struct{}
func (l *DiscardLogger) New(ctx ...interface{}) Logger { return l }
func (l *DiscardLogger) Debug(msg string, ctx ...interface{}) {}
func (l *DiscardLogger) Info(msg string, ctx ...interface{}) {}
func (l *DiscardLogger) Warn(msg string, ctx ...interface{}) {}
func (l *DiscardLogger) Error(msg string, ctx ...interface{}) {}
func (l *DiscardLogger) Crit(msg string, ctx ...interface{}) {}