Adding upstream version 2.1.2.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
c8c64afc61
commit
41a2f19f12
220 changed files with 19814 additions and 0 deletions
148
logger.go
Normal file
148
logger.go
Normal file
|
@ -0,0 +1,148 @@
|
|||
package chart
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
_ Logger = (*StdoutLogger)(nil)
|
||||
)
|
||||
|
||||
// NewLogger returns a new logger.
|
||||
func NewLogger(options ...LoggerOption) Logger {
|
||||
stl := &StdoutLogger{
|
||||
TimeFormat: time.RFC3339Nano,
|
||||
Stdout: os.Stdout,
|
||||
Stderr: os.Stderr,
|
||||
}
|
||||
for _, option := range options {
|
||||
option(stl)
|
||||
}
|
||||
return stl
|
||||
}
|
||||
|
||||
// Logger is a type that implements the logging interface.
|
||||
type Logger interface {
|
||||
Info(...interface{})
|
||||
Infof(string, ...interface{})
|
||||
Debug(...interface{})
|
||||
Debugf(string, ...interface{})
|
||||
Err(error)
|
||||
FatalErr(error)
|
||||
Error(...interface{})
|
||||
Errorf(string, ...interface{})
|
||||
}
|
||||
|
||||
// Info logs an info message if the logger is set.
|
||||
func Info(log Logger, arguments ...interface{}) {
|
||||
if log == nil {
|
||||
return
|
||||
}
|
||||
log.Info(arguments...)
|
||||
}
|
||||
|
||||
// Infof logs an info message if the logger is set.
|
||||
func Infof(log Logger, format string, arguments ...interface{}) {
|
||||
if log == nil {
|
||||
return
|
||||
}
|
||||
log.Infof(format, arguments...)
|
||||
}
|
||||
|
||||
// Debug logs an debug message if the logger is set.
|
||||
func Debug(log Logger, arguments ...interface{}) {
|
||||
if log == nil {
|
||||
return
|
||||
}
|
||||
log.Debug(arguments...)
|
||||
}
|
||||
|
||||
// Debugf logs an debug message if the logger is set.
|
||||
func Debugf(log Logger, format string, arguments ...interface{}) {
|
||||
if log == nil {
|
||||
return
|
||||
}
|
||||
log.Debugf(format, arguments...)
|
||||
}
|
||||
|
||||
// LoggerOption mutates a stdout logger.
|
||||
type LoggerOption = func(*StdoutLogger)
|
||||
|
||||
//OptLoggerStdout sets the Stdout writer.
|
||||
func OptLoggerStdout(wr io.Writer) LoggerOption {
|
||||
return func(stl *StdoutLogger) {
|
||||
stl.Stdout = wr
|
||||
}
|
||||
}
|
||||
|
||||
// OptLoggerStderr sets the Stdout writer.
|
||||
func OptLoggerStderr(wr io.Writer) LoggerOption {
|
||||
return func(stl *StdoutLogger) {
|
||||
stl.Stderr = wr
|
||||
}
|
||||
}
|
||||
|
||||
// StdoutLogger is a basic logger.
|
||||
type StdoutLogger struct {
|
||||
TimeFormat string
|
||||
Stdout io.Writer
|
||||
Stderr io.Writer
|
||||
}
|
||||
|
||||
// Info writes an info message.
|
||||
func (l *StdoutLogger) Info(arguments ...interface{}) {
|
||||
l.Println(append([]interface{}{"[INFO]"}, arguments...)...)
|
||||
}
|
||||
|
||||
// Infof writes an info message.
|
||||
func (l *StdoutLogger) Infof(format string, arguments ...interface{}) {
|
||||
l.Println(append([]interface{}{"[INFO]"}, fmt.Sprintf(format, arguments...))...)
|
||||
}
|
||||
|
||||
// Debug writes an debug message.
|
||||
func (l *StdoutLogger) Debug(arguments ...interface{}) {
|
||||
l.Println(append([]interface{}{"[DEBUG]"}, arguments...)...)
|
||||
}
|
||||
|
||||
// Debugf writes an debug message.
|
||||
func (l *StdoutLogger) Debugf(format string, arguments ...interface{}) {
|
||||
l.Println(append([]interface{}{"[DEBUG]"}, fmt.Sprintf(format, arguments...))...)
|
||||
}
|
||||
|
||||
// Error writes an error message.
|
||||
func (l *StdoutLogger) Error(arguments ...interface{}) {
|
||||
l.Println(append([]interface{}{"[ERROR]"}, arguments...)...)
|
||||
}
|
||||
|
||||
// Errorf writes an error message.
|
||||
func (l *StdoutLogger) Errorf(format string, arguments ...interface{}) {
|
||||
l.Println(append([]interface{}{"[ERROR]"}, fmt.Sprintf(format, arguments...))...)
|
||||
}
|
||||
|
||||
// Err writes an error message.
|
||||
func (l *StdoutLogger) Err(err error) {
|
||||
if err != nil {
|
||||
l.Println(append([]interface{}{"[ERROR]"}, err.Error())...)
|
||||
}
|
||||
}
|
||||
|
||||
// FatalErr writes an error message and exits.
|
||||
func (l *StdoutLogger) FatalErr(err error) {
|
||||
if err != nil {
|
||||
l.Println(append([]interface{}{"[FATAL]"}, err.Error())...)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
// Println prints a new message.
|
||||
func (l *StdoutLogger) Println(arguments ...interface{}) {
|
||||
fmt.Fprintln(l.Stdout, append([]interface{}{time.Now().UTC().Format(l.TimeFormat)}, arguments...)...)
|
||||
}
|
||||
|
||||
// Errorln prints a new message.
|
||||
func (l *StdoutLogger) Errorln(arguments ...interface{}) {
|
||||
fmt.Fprintln(l.Stderr, append([]interface{}{time.Now().UTC().Format(l.TimeFormat)}, arguments...)...)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue