github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/util/log.go (about)

     1  package util
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"strings"
     7  
     8  	"github.com/go-kit/log"
     9  	"github.com/go-kit/log/level"
    10  )
    11  
    12  type LogAdapter struct {
    13  	log.Logger
    14  }
    15  
    16  func NewLogAdapter(l log.Logger) LogAdapter {
    17  	return LogAdapter{
    18  		Logger: l,
    19  	}
    20  }
    21  
    22  // Fatal implements tail.logger
    23  func (l LogAdapter) Fatal(v ...interface{}) {
    24  	level.Error(l).Log("msg", fmt.Sprint(v...))
    25  	os.Exit(1)
    26  }
    27  
    28  // Fatalf implements tail.logger
    29  func (l LogAdapter) Fatalf(format string, v ...interface{}) {
    30  	level.Error(l).Log("msg", fmt.Sprintf(strings.TrimSuffix(format, "\n"), v...))
    31  	os.Exit(1)
    32  }
    33  
    34  // Fatalln implements tail.logger
    35  func (l LogAdapter) Fatalln(v ...interface{}) {
    36  	level.Error(l).Log("msg", fmt.Sprint(v...))
    37  	os.Exit(1)
    38  }
    39  
    40  // Panic implements tail.logger
    41  func (l LogAdapter) Panic(v ...interface{}) {
    42  	s := fmt.Sprint(v...)
    43  	level.Error(l).Log("msg", s)
    44  	panic(s)
    45  }
    46  
    47  // Panicf implements tail.logger
    48  func (l LogAdapter) Panicf(format string, v ...interface{}) {
    49  	s := fmt.Sprintf(strings.TrimSuffix(format, "\n"), v...)
    50  	level.Error(l).Log("msg", s)
    51  	panic(s)
    52  }
    53  
    54  // Panicln implements tail.logger
    55  func (l LogAdapter) Panicln(v ...interface{}) {
    56  	s := fmt.Sprint(v...)
    57  	level.Error(l).Log("msg", s)
    58  	panic(s)
    59  }
    60  
    61  // Print implements tail.logger
    62  func (l LogAdapter) Print(v ...interface{}) {
    63  	level.Info(l).Log("msg", fmt.Sprint(v...))
    64  }
    65  
    66  // Printf implements tail.logger
    67  func (l LogAdapter) Printf(format string, v ...interface{}) {
    68  	level.Info(l).Log("msg", fmt.Sprintf(strings.TrimSuffix(format, "\n"), v...))
    69  }
    70  
    71  // Println implements tail.logger
    72  func (l LogAdapter) Println(v ...interface{}) {
    73  	level.Info(l).Log("msg", fmt.Sprint(v...))
    74  }
    75  
    76  // TODO(dannyk): remove once weaveworks/common updates to go-kit/log
    77  // 					-> we can then revert to using Level.Gokit
    78  func LogFilter(l string) level.Option {
    79  	switch l {
    80  	case "debug":
    81  		return level.AllowDebug()
    82  	case "info":
    83  		return level.AllowInfo()
    84  	case "warn":
    85  		return level.AllowWarn()
    86  	case "error":
    87  		return level.AllowError()
    88  	default:
    89  		return level.AllowAll()
    90  	}
    91  }