|
Packit Service |
4d2de5 |
package aws
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
import (
|
|
Packit Service |
4d2de5 |
"log"
|
|
Packit Service |
4d2de5 |
"os"
|
|
Packit Service |
4d2de5 |
)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// A LogLevelType defines the level logging should be performed at. Used to instruct
|
|
Packit Service |
4d2de5 |
// the SDK which statements should be logged.
|
|
Packit Service |
4d2de5 |
type LogLevelType uint
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// LogLevel returns the pointer to a LogLevel. Should be used to workaround
|
|
Packit Service |
4d2de5 |
// not being able to take the address of a non-composite literal.
|
|
Packit Service |
4d2de5 |
func LogLevel(l LogLevelType) *LogLevelType {
|
|
Packit Service |
4d2de5 |
return &l
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Value returns the LogLevel value or the default value LogOff if the LogLevel
|
|
Packit Service |
4d2de5 |
// is nil. Safe to use on nil value LogLevelTypes.
|
|
Packit Service |
4d2de5 |
func (l *LogLevelType) Value() LogLevelType {
|
|
Packit Service |
4d2de5 |
if l != nil {
|
|
Packit Service |
4d2de5 |
return *l
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
return LogOff
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Matches returns true if the v LogLevel is enabled by this LogLevel. Should be
|
|
Packit Service |
4d2de5 |
// used with logging sub levels. Is safe to use on nil value LogLevelTypes. If
|
|
Packit Service |
4d2de5 |
// LogLevel is nil, will default to LogOff comparison.
|
|
Packit Service |
4d2de5 |
func (l *LogLevelType) Matches(v LogLevelType) bool {
|
|
Packit Service |
4d2de5 |
c := l.Value()
|
|
Packit Service |
4d2de5 |
return c&v == v
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// AtLeast returns true if this LogLevel is at least high enough to satisfies v.
|
|
Packit Service |
4d2de5 |
// Is safe to use on nil value LogLevelTypes. If LogLevel is nil, will default
|
|
Packit Service |
4d2de5 |
// to LogOff comparison.
|
|
Packit Service |
4d2de5 |
func (l *LogLevelType) AtLeast(v LogLevelType) bool {
|
|
Packit Service |
4d2de5 |
c := l.Value()
|
|
Packit Service |
4d2de5 |
return c >= v
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
const (
|
|
Packit Service |
4d2de5 |
// LogOff states that no logging should be performed by the SDK. This is the
|
|
Packit Service |
4d2de5 |
// default state of the SDK, and should be use to disable all logging.
|
|
Packit Service |
4d2de5 |
LogOff LogLevelType = iota * 0x1000
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// LogDebug state that debug output should be logged by the SDK. This should
|
|
Packit Service |
4d2de5 |
// be used to inspect request made and responses received.
|
|
Packit Service |
4d2de5 |
LogDebug
|
|
Packit Service |
4d2de5 |
)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Debug Logging Sub Levels
|
|
Packit Service |
4d2de5 |
const (
|
|
Packit Service |
4d2de5 |
// LogDebugWithSigning states that the SDK should log request signing and
|
|
Packit Service |
4d2de5 |
// presigning events. This should be used to log the signing details of
|
|
Packit Service |
4d2de5 |
// requests for debugging. Will also enable LogDebug.
|
|
Packit Service |
4d2de5 |
LogDebugWithSigning LogLevelType = LogDebug | (1 << iota)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// LogDebugWithHTTPBody states the SDK should log HTTP request and response
|
|
Packit Service |
4d2de5 |
// HTTP bodys in addition to the headers and path. This should be used to
|
|
Packit Service |
4d2de5 |
// see the body content of requests and responses made while using the SDK
|
|
Packit Service |
4d2de5 |
// Will also enable LogDebug.
|
|
Packit Service |
4d2de5 |
LogDebugWithHTTPBody
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// LogDebugWithRequestRetries states the SDK should log when service requests will
|
|
Packit Service |
4d2de5 |
// be retried. This should be used to log when you want to log when service
|
|
Packit Service |
4d2de5 |
// requests are being retried. Will also enable LogDebug.
|
|
Packit Service |
4d2de5 |
LogDebugWithRequestRetries
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// LogDebugWithRequestErrors states the SDK should log when service requests fail
|
|
Packit Service |
4d2de5 |
// to build, send, validate, or unmarshal.
|
|
Packit Service |
4d2de5 |
LogDebugWithRequestErrors
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// LogDebugWithEventStreamBody states the SDK should log EventStream
|
|
Packit Service |
4d2de5 |
// request and response bodys. This should be used to log the EventStream
|
|
Packit Service |
4d2de5 |
// wire unmarshaled message content of requests and responses made while
|
|
Packit Service |
4d2de5 |
// using the SDK Will also enable LogDebug.
|
|
Packit Service |
4d2de5 |
LogDebugWithEventStreamBody
|
|
Packit Service |
4d2de5 |
)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// A Logger is a minimalistic interface for the SDK to log messages to. Should
|
|
Packit Service |
4d2de5 |
// be used to provide custom logging writers for the SDK to use.
|
|
Packit Service |
4d2de5 |
type Logger interface {
|
|
Packit Service |
4d2de5 |
Log(...interface{})
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// A LoggerFunc is a convenience type to convert a function taking a variadic
|
|
Packit Service |
4d2de5 |
// list of arguments and wrap it so the Logger interface can be used.
|
|
Packit Service |
4d2de5 |
//
|
|
Packit Service |
4d2de5 |
// Example:
|
|
Packit Service |
4d2de5 |
// s3.New(sess, &aws.Config{Logger: aws.LoggerFunc(func(args ...interface{}) {
|
|
Packit Service |
4d2de5 |
// fmt.Fprintln(os.Stdout, args...)
|
|
Packit Service |
4d2de5 |
// })})
|
|
Packit Service |
4d2de5 |
type LoggerFunc func(...interface{})
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Log calls the wrapped function with the arguments provided
|
|
Packit Service |
4d2de5 |
func (f LoggerFunc) Log(args ...interface{}) {
|
|
Packit Service |
4d2de5 |
f(args...)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// NewDefaultLogger returns a Logger which will write log messages to stdout, and
|
|
Packit Service |
4d2de5 |
// use same formatting runes as the stdlib log.Logger
|
|
Packit Service |
4d2de5 |
func NewDefaultLogger() Logger {
|
|
Packit Service |
4d2de5 |
return &defaultLogger{
|
|
Packit Service |
4d2de5 |
logger: log.New(os.Stdout, "", log.LstdFlags),
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// A defaultLogger provides a minimalistic logger satisfying the Logger interface.
|
|
Packit Service |
4d2de5 |
type defaultLogger struct {
|
|
Packit Service |
4d2de5 |
logger *log.Logger
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Log logs the parameters to the stdlib logger. See log.Println.
|
|
Packit Service |
4d2de5 |
func (l defaultLogger) Log(args ...interface{}) {
|
|
Packit Service |
4d2de5 |
l.logger.Println(args...)
|
|
Packit Service |
4d2de5 |
}
|