diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/log.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/utils/log.go b/utils/log.go new file mode 100644 index 000000000..360c785d0 --- /dev/null +++ b/utils/log.go @@ -0,0 +1,33 @@ +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package utils + +import ( + "bytes" + "io" + "io/ioutil" + + l4g "github.com/alecthomas/log4go" +) + +// DebugReader logs the content of the io.Reader and returns a new io.Reader +// with the same content as the received io.Reader. +// If you pass reader by reference, it won't be re-created unless the loglevel +// includes Debug. +// If an error is returned, the reader is consumed an cannot be read again. +func DebugReader(reader io.Reader, message string) (io.Reader, error) { + var err error + l4g.Debug(func() string { + content, err := ioutil.ReadAll(reader) + if err != nil { + return "" + } + + reader = bytes.NewReader(content) + + return message + string(content) + }) + + return reader, err +} |