github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/resource/context/internal/util.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package internal 5 6 import ( 7 "io" 8 ) 9 10 // Logger exposes the logger functionality needed by CloseAndLog. 11 type Logger interface { 12 // Errorf formats the provided log message and writes it to the log. 13 Errorf(string, ...interface{}) 14 } 15 16 // CloseAndLog calls the closer's Close() and logs any error returned therefrom. 17 func CloseAndLog(closer io.Closer, label string, logger Logger) { 18 if closer == nil { 19 return 20 } 21 if err := closer.Close(); err != nil { 22 logger.Errorf("while closing %s: %v", label, err) 23 } 24 }