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  }