2
0

Add *Conn.SetLogLevel

Allow changing log level after connection is established. Because
log level and loggers can be set independently, it is now possible
to have a log level above none when there is a nil logger. This
means all log statements need to check for nil logger and an
appropriate log level. This check has been factored out into
*Conn.shouldLog.
This commit is contained in:
Jack Christensen
2016-02-13 10:13:10 -06:00
parent cffae7ff5d
commit 0f7bf19387
4 changed files with 120 additions and 36 deletions
+10 -10
View File
@@ -15,7 +15,7 @@ type msgReader struct {
msgBytesRemaining int32
err error
log func(lvl int, msg string, ctx ...interface{})
logLevel *int
shouldLog func(lvl int) bool
}
// Err returns any error that the msgReader has experienced
@@ -25,7 +25,7 @@ func (r *msgReader) Err() error {
// fatal tells r that a Fatal error has occurred
func (r *msgReader) fatal(err error) {
if *r.logLevel >= LogLevelTrace {
if r.shouldLog(LogLevelTrace) {
r.log(LogLevelTrace, "msgReader.fatal", "error", err, "msgBytesRemaining", r.msgBytesRemaining)
}
r.err = err
@@ -38,7 +38,7 @@ func (r *msgReader) rxMsg() (byte, error) {
}
if r.msgBytesRemaining > 0 {
if *r.logLevel >= LogLevelTrace {
if r.shouldLog(LogLevelTrace) {
r.log(LogLevelTrace, "msgReader.rxMsg discarding unread previous message", "msgBytesRemaining", r.msgBytesRemaining)
}
@@ -68,7 +68,7 @@ func (r *msgReader) readByte() byte {
return 0
}
if *r.logLevel >= LogLevelTrace {
if r.shouldLog(LogLevelTrace) {
r.log(LogLevelTrace, "msgReader.readByte", "value", b, "byteAsString", string(b), "msgBytesRemaining", r.msgBytesRemaining)
}
@@ -95,7 +95,7 @@ func (r *msgReader) readInt16() int16 {
n := int16(binary.BigEndian.Uint16(b))
if *r.logLevel >= LogLevelTrace {
if r.shouldLog(LogLevelTrace) {
r.log(LogLevelTrace, "msgReader.readInt16", "value", n, "msgBytesRemaining", r.msgBytesRemaining)
}
@@ -122,7 +122,7 @@ func (r *msgReader) readInt32() int32 {
n := int32(binary.BigEndian.Uint32(b))
if *r.logLevel >= LogLevelTrace {
if r.shouldLog(LogLevelTrace) {
r.log(LogLevelTrace, "msgReader.readInt32", "value", n, "msgBytesRemaining", r.msgBytesRemaining)
}
@@ -149,7 +149,7 @@ func (r *msgReader) readInt64() int64 {
n := int64(binary.BigEndian.Uint64(b))
if *r.logLevel >= LogLevelTrace {
if r.shouldLog(LogLevelTrace) {
r.log(LogLevelTrace, "msgReader.readInt64", "value", n, "msgBytesRemaining", r.msgBytesRemaining)
}
@@ -180,7 +180,7 @@ func (r *msgReader) readCString() string {
s := string(b[0 : len(b)-1])
if *r.logLevel >= LogLevelTrace {
if r.shouldLog(LogLevelTrace) {
r.log(LogLevelTrace, "msgReader.readCString", "value", s, "msgBytesRemaining", r.msgBytesRemaining)
}
@@ -214,7 +214,7 @@ func (r *msgReader) readString(count int32) string {
s := string(b)
if *r.logLevel >= LogLevelTrace {
if r.shouldLog(LogLevelTrace) {
r.log(LogLevelTrace, "msgReader.readString", "value", s, "msgBytesRemaining", r.msgBytesRemaining)
}
@@ -241,7 +241,7 @@ func (r *msgReader) readBytes(count int32) []byte {
return nil
}
if *r.logLevel >= LogLevelTrace {
if r.shouldLog(LogLevelTrace) {
r.log(LogLevelTrace, "msgReader.readBytes", "value", b, "msgBytesRemaining", r.msgBytesRemaining)
}