github.com/ipfans/trojan-go@v0.11.0/log/log.go (about)

     1  package log
     2  
     3  import (
     4  	"io"
     5  	"os"
     6  )
     7  
     8  // LogLevel how much log to dump
     9  // 0: ALL; 1: INFO; 2: WARN; 3: ERROR; 4: FATAL; 5: OFF
    10  type LogLevel int
    11  
    12  const (
    13  	AllLevel   LogLevel = 0
    14  	InfoLevel  LogLevel = 1
    15  	WarnLevel  LogLevel = 2
    16  	ErrorLevel LogLevel = 3
    17  	FatalLevel LogLevel = 4
    18  	OffLevel   LogLevel = 5
    19  )
    20  
    21  type Logger interface {
    22  	Fatal(v ...interface{})
    23  	Fatalf(format string, v ...interface{})
    24  	Error(v ...interface{})
    25  	Errorf(format string, v ...interface{})
    26  	Warn(v ...interface{})
    27  	Warnf(format string, v ...interface{})
    28  	Info(v ...interface{})
    29  	Infof(format string, v ...interface{})
    30  	Debug(v ...interface{})
    31  	Debugf(format string, v ...interface{})
    32  	Trace(v ...interface{})
    33  	Tracef(format string, v ...interface{})
    34  	SetLogLevel(level LogLevel)
    35  	SetOutput(io.Writer)
    36  }
    37  
    38  var logger Logger = &EmptyLogger{}
    39  
    40  type EmptyLogger struct{}
    41  
    42  func (l *EmptyLogger) SetLogLevel(LogLevel) {}
    43  
    44  func (l *EmptyLogger) Fatal(v ...interface{}) { os.Exit(1) }
    45  
    46  func (l *EmptyLogger) Fatalf(format string, v ...interface{}) { os.Exit(1) }
    47  
    48  func (l *EmptyLogger) Error(v ...interface{}) {}
    49  
    50  func (l *EmptyLogger) Errorf(format string, v ...interface{}) {}
    51  
    52  func (l *EmptyLogger) Warn(v ...interface{}) {}
    53  
    54  func (l *EmptyLogger) Warnf(format string, v ...interface{}) {}
    55  
    56  func (l *EmptyLogger) Info(v ...interface{}) {}
    57  
    58  func (l *EmptyLogger) Infof(format string, v ...interface{}) {}
    59  
    60  func (l *EmptyLogger) Debug(v ...interface{}) {}
    61  
    62  func (l *EmptyLogger) Debugf(format string, v ...interface{}) {}
    63  
    64  func (l *EmptyLogger) Trace(v ...interface{}) {}
    65  
    66  func (l *EmptyLogger) Tracef(format string, v ...interface{}) {}
    67  
    68  func (l *EmptyLogger) SetOutput(w io.Writer) {}
    69  
    70  func Error(v ...interface{}) {
    71  	logger.Error(v...)
    72  }
    73  
    74  func Errorf(format string, v ...interface{}) {
    75  	logger.Errorf(format, v...)
    76  }
    77  
    78  func Warn(v ...interface{}) {
    79  	logger.Warn(v...)
    80  }
    81  
    82  func Warnf(format string, v ...interface{}) {
    83  	logger.Warnf(format, v...)
    84  }
    85  
    86  func Info(v ...interface{}) {
    87  	logger.Info(v...)
    88  }
    89  
    90  func Infof(format string, v ...interface{}) {
    91  	logger.Infof(format, v...)
    92  }
    93  
    94  func Debug(v ...interface{}) {
    95  	logger.Debug(v...)
    96  }
    97  
    98  func Debugf(format string, v ...interface{}) {
    99  	logger.Debugf(format, v...)
   100  }
   101  
   102  func Trace(v ...interface{}) {
   103  	logger.Trace(v...)
   104  }
   105  
   106  func Tracef(format string, v ...interface{}) {
   107  	logger.Tracef(format, v...)
   108  }
   109  
   110  func Fatal(v ...interface{}) {
   111  	logger.Fatal(v...)
   112  }
   113  
   114  func Fatalf(format string, v ...interface{}) {
   115  	logger.Fatalf(format, v...)
   116  }
   117  
   118  func SetLogLevel(level LogLevel) {
   119  	logger.SetLogLevel(level)
   120  }
   121  
   122  func SetOutput(w io.Writer) {
   123  	logger.SetOutput(w)
   124  }
   125  
   126  func RegisterLogger(l Logger) {
   127  	logger = l
   128  }