mirror of https://github.com/docker/docs.git
113 lines
2.7 KiB
Go
113 lines
2.7 KiB
Go
package log
|
|
|
|
import (
|
|
"io"
|
|
|
|
"fmt"
|
|
|
|
"sync"
|
|
|
|
"github.com/Sirupsen/logrus"
|
|
)
|
|
|
|
type LogrusMachineLogger struct {
|
|
history []string
|
|
historyLock sync.Locker
|
|
logger *logrus.Logger
|
|
}
|
|
|
|
// NewLogrusMachineLogger creates the MachineLogger implementation used by the docker-machine
|
|
func NewLogrusMachineLogger() MachineLogger {
|
|
logrusLogger := logrus.New()
|
|
logrusLogger.Level = logrus.InfoLevel
|
|
logrusLogger.Formatter = new(MachineFormatter)
|
|
return &LogrusMachineLogger{[]string{}, &sync.Mutex{}, logrusLogger}
|
|
}
|
|
|
|
// RedirectStdOutToStdErr prevents any log from corrupting the output
|
|
func (ml *LogrusMachineLogger) RedirectStdOutToStdErr() {
|
|
ml.logger.Level = logrus.ErrorLevel
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) SetDebug(debug bool) {
|
|
if debug {
|
|
ml.logger.Level = logrus.DebugLevel
|
|
} else {
|
|
ml.logger.Level = logrus.InfoLevel
|
|
}
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) SetOutput(out io.Writer) {
|
|
ml.logger.Out = out
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Logger() *logrus.Logger {
|
|
return ml.logger
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Debug(args ...interface{}) {
|
|
ml.record(args...)
|
|
ml.logger.Debug(args...)
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Debugf(fmtString string, args ...interface{}) {
|
|
ml.recordf(fmtString, args...)
|
|
ml.logger.Debugf(fmtString, args...)
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Error(args ...interface{}) {
|
|
ml.record(args...)
|
|
ml.logger.Error(args...)
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Errorf(fmtString string, args ...interface{}) {
|
|
ml.recordf(fmtString, args...)
|
|
ml.logger.Errorf(fmtString, args...)
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Info(args ...interface{}) {
|
|
ml.record(args...)
|
|
ml.logger.Info(args...)
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Infof(fmtString string, args ...interface{}) {
|
|
ml.recordf(fmtString, args...)
|
|
ml.logger.Infof(fmtString, args...)
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Fatal(args ...interface{}) {
|
|
ml.record(args...)
|
|
ml.logger.Fatal(args...)
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Fatalf(fmtString string, args ...interface{}) {
|
|
ml.recordf(fmtString, args...)
|
|
ml.logger.Fatalf(fmtString, args...)
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Warn(args ...interface{}) {
|
|
ml.record(args...)
|
|
ml.logger.Warn(args...)
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) Warnf(fmtString string, args ...interface{}) {
|
|
ml.recordf(fmtString, args...)
|
|
ml.logger.Warnf(fmtString, args...)
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) History() []string {
|
|
return ml.history
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) record(args ...interface{}) {
|
|
ml.historyLock.Lock()
|
|
defer ml.historyLock.Unlock()
|
|
ml.history = append(ml.history, fmt.Sprint(args...))
|
|
}
|
|
|
|
func (ml *LogrusMachineLogger) recordf(fmtString string, args ...interface{}) {
|
|
ml.historyLock.Lock()
|
|
defer ml.historyLock.Unlock()
|
|
ml.history = append(ml.history, fmt.Sprintf(fmtString, args...))
|
|
}
|