From 98109c57bb0323350178048c8a7e85fa870433e7 Mon Sep 17 00:00:00 2001 From: Jack Christensen Date: Mon, 14 Jul 2014 09:42:52 -0500 Subject: [PATCH] Use interface for logging instead of log15 directly --- conn.go | 8 +++----- conn_pool.go | 6 ++---- logger.go | 26 ++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 logger.go diff --git a/conn.go b/conn.go index 02b8c4b5..7f5d7f22 100644 --- a/conn.go +++ b/conn.go @@ -14,7 +14,6 @@ import ( "encoding/hex" "errors" "fmt" - log "gopkg.in/inconshreveable/log15.v2" "io" "net" "net/url" @@ -34,7 +33,7 @@ type ConnConfig struct { User string // default: OS user name Password string 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. @@ -53,7 +52,7 @@ type Conn struct { notifications []*Notification alive bool causeOfDeath error - logger log.Logger + logger Logger rows Rows mr msgReader } @@ -100,8 +99,7 @@ func Connect(config ConnConfig) (c *Conn, err error) { if c.config.Logger != nil { c.logger = c.config.Logger } else { - c.logger = log.New() - c.logger.SetHandler(log.DiscardHandler()) + c.logger = &DiscardLogger{} } if c.config.User == "" { diff --git a/conn_pool.go b/conn_pool.go index a103501b..4234db7a 100644 --- a/conn_pool.go +++ b/conn_pool.go @@ -2,7 +2,6 @@ package pgx import ( "errors" - log "gopkg.in/inconshreveable/log15.v2" "sync" ) @@ -19,7 +18,7 @@ type ConnPool struct { config ConnConfig // config used when establishing connection maxConnections int afterConnect func(*Conn) error - logger log.Logger + logger Logger } type ConnPoolStat struct { @@ -45,8 +44,7 @@ func NewConnPool(config ConnPoolConfig) (p *ConnPool, err error) { if config.Logger != nil { p.logger = config.Logger } else { - p.logger = log.New() - p.logger.SetHandler(log.DiscardHandler()) + p.logger = &DiscardLogger{} } p.allConnections = make([]*Conn, 0, p.maxConnections) diff --git a/logger.go b/logger.go new file mode 100644 index 00000000..610a5625 --- /dev/null +++ b/logger.go @@ -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{}) {}