github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/lib/log/teelogger/api.go (about)

     1  package teelogger
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/Cloud-Foundations/Dominator/lib/log"
     7  	"github.com/Cloud-Foundations/Dominator/lib/log/debuglogger"
     8  )
     9  
    10  type flusher interface {
    11  	Flush() error
    12  }
    13  
    14  type Logger struct {
    15  	one log.DebugLogger
    16  	two log.DebugLogger
    17  }
    18  
    19  func New(one, two log.Logger) *Logger {
    20  	return &Logger{debuglogger.Upgrade(one), debuglogger.Upgrade(two)}
    21  }
    22  
    23  func (l *Logger) Debug(level uint8, v ...interface{}) {
    24  	l.one.Debug(level, v...)
    25  	l.two.Debug(level, v...)
    26  }
    27  
    28  func (l *Logger) Debugf(level uint8, format string, v ...interface{}) {
    29  	l.one.Debugf(level, format, v...)
    30  	l.two.Debugf(level, format, v...)
    31  }
    32  
    33  func (l *Logger) Debugln(level uint8, v ...interface{}) {
    34  	l.one.Debugln(level, v...)
    35  	l.two.Debugln(level, v...)
    36  }
    37  
    38  func (l *Logger) Fatal(v ...interface{}) {
    39  	msg := fmt.Sprint(v...)
    40  	l.one.Print(msg)
    41  	if fl, ok := l.one.(flusher); ok {
    42  		fl.Flush()
    43  	}
    44  	l.two.Fatal(msg)
    45  }
    46  
    47  func (l *Logger) Fatalf(format string, v ...interface{}) {
    48  	msg := fmt.Sprintf(format, v...)
    49  	l.one.Print(msg)
    50  	if fl, ok := l.one.(flusher); ok {
    51  		fl.Flush()
    52  	}
    53  	l.two.Fatal(msg)
    54  }
    55  
    56  func (l *Logger) Fatalln(v ...interface{}) {
    57  	msg := fmt.Sprintln(v...)
    58  	l.one.Print(msg)
    59  	if fl, ok := l.one.(flusher); ok {
    60  		fl.Flush()
    61  	}
    62  	l.two.Fatal(msg)
    63  }
    64  
    65  func (l *Logger) Panic(v ...interface{}) {
    66  	msg := fmt.Sprint(v...)
    67  	l.one.Print(msg)
    68  	l.two.Panic(msg)
    69  }
    70  
    71  func (l *Logger) Panicf(format string, v ...interface{}) {
    72  	msg := fmt.Sprintf(format, v...)
    73  	l.one.Print(msg)
    74  	l.two.Panic(msg)
    75  }
    76  
    77  func (l *Logger) Panicln(v ...interface{}) {
    78  	msg := fmt.Sprintln(v...)
    79  	l.one.Print(msg)
    80  	l.two.Panic(msg)
    81  }
    82  
    83  func (l *Logger) Print(v ...interface{}) {
    84  	msg := fmt.Sprint(v...)
    85  	l.one.Print(msg)
    86  	l.two.Print(msg)
    87  }
    88  
    89  func (l *Logger) Printf(format string, v ...interface{}) {
    90  	msg := fmt.Sprintf(format, v...)
    91  	l.one.Print(msg)
    92  	l.two.Print(msg)
    93  }
    94  
    95  func (l *Logger) Println(v ...interface{}) {
    96  	msg := fmt.Sprintln(v...)
    97  	l.one.Print(msg)
    98  	l.two.Print(msg)
    99  }