mirror of https://github.com/k3s-io/k3s
125 lines
3.2 KiB
Go
125 lines
3.2 KiB
Go
|
// +build logdebug
|
||
|
|
||
|
package logger
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"runtime"
|
||
|
)
|
||
|
|
||
|
type Logger interface {
|
||
|
Debug(msg string, ctx ...interface{})
|
||
|
Info(msg string, ctx ...interface{})
|
||
|
Warn(msg string, ctx ...interface{})
|
||
|
Error(msg string, ctx ...interface{})
|
||
|
Crit(msg string, ctx ...interface{})
|
||
|
}
|
||
|
|
||
|
var Log Logger
|
||
|
|
||
|
type nullLogger struct{}
|
||
|
|
||
|
func (nl nullLogger) Debug(msg string, ctx ...interface{}) {}
|
||
|
func (nl nullLogger) Info(msg string, ctx ...interface{}) {}
|
||
|
func (nl nullLogger) Warn(msg string, ctx ...interface{}) {}
|
||
|
func (nl nullLogger) Error(msg string, ctx ...interface{}) {}
|
||
|
func (nl nullLogger) Crit(msg string, ctx ...interface{}) {}
|
||
|
|
||
|
func init() {
|
||
|
Log = nullLogger{}
|
||
|
}
|
||
|
|
||
|
// General wrappers around Logger interface functions.
|
||
|
func Debug(msg string, ctx ...interface{}) {
|
||
|
if Log != nil {
|
||
|
pc, fn, line, _ := runtime.Caller(1)
|
||
|
msg := fmt.Sprintf("%s: %d: %s: %s", fn, line, runtime.FuncForPC(pc).Name(), msg)
|
||
|
Log.Debug(msg, ctx...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Info(msg string, ctx ...interface{}) {
|
||
|
if Log != nil {
|
||
|
pc, fn, line, _ := runtime.Caller(1)
|
||
|
msg := fmt.Sprintf("%s: %d: %s: %s", fn, line, runtime.FuncForPC(pc).Name(), msg)
|
||
|
Log.Info(msg, ctx...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Warn(msg string, ctx ...interface{}) {
|
||
|
if Log != nil {
|
||
|
pc, fn, line, _ := runtime.Caller(1)
|
||
|
msg := fmt.Sprintf("%s: %d: %s: %s", fn, line, runtime.FuncForPC(pc).Name(), msg)
|
||
|
Log.Warn(msg, ctx...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Error(msg string, ctx ...interface{}) {
|
||
|
if Log != nil {
|
||
|
pc, fn, line, _ := runtime.Caller(1)
|
||
|
msg := fmt.Sprintf("%s: %d: %s: %s", fn, line, runtime.FuncForPC(pc).Name(), msg)
|
||
|
Log.Error(msg, ctx...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Crit(msg string, ctx ...interface{}) {
|
||
|
if Log != nil {
|
||
|
pc, fn, line, _ := runtime.Caller(1)
|
||
|
msg := fmt.Sprintf("%s: %d: %s: %s", fn, line, runtime.FuncForPC(pc).Name(), msg)
|
||
|
Log.Crit(msg, ctx...)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Wrappers around Logger interface functions that send a string to the Logger
|
||
|
// by running it through fmt.Sprintf().
|
||
|
func Infof(format string, args ...interface{}) {
|
||
|
if Log != nil {
|
||
|
msg := fmt.Sprintf(format, args...)
|
||
|
pc, fn, line, _ := runtime.Caller(1)
|
||
|
msg = fmt.Sprintf("%s: %d: %s: %s", fn, line, runtime.FuncForPC(pc).Name(), msg)
|
||
|
Log.Info(msg)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Debugf(format string, args ...interface{}) {
|
||
|
if Log != nil {
|
||
|
msg := fmt.Sprintf(format, args...)
|
||
|
pc, fn, line, _ := runtime.Caller(1)
|
||
|
msg = fmt.Sprintf("%s: %d: %s: %s", fn, line, runtime.FuncForPC(pc).Name(), msg)
|
||
|
Log.Debug(msg)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Warnf(format string, args ...interface{}) {
|
||
|
if Log != nil {
|
||
|
msg := fmt.Sprintf(format, args...)
|
||
|
pc, fn, line, _ := runtime.Caller(1)
|
||
|
msg = fmt.Sprintf("%s: %d: %s: %s", fn, line, runtime.FuncForPC(pc).Name(), msg)
|
||
|
Log.Warn(msg)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Errorf(format string, args ...interface{}) {
|
||
|
if Log != nil {
|
||
|
msg := fmt.Sprintf(format, args...)
|
||
|
pc, fn, line, _ := runtime.Caller(1)
|
||
|
msg = fmt.Sprintf("%s: %d: %s: %s", fn, line, runtime.FuncForPC(pc).Name(), msg)
|
||
|
Log.Error(msg)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Critf(format string, args ...interface{}) {
|
||
|
if Log != nil {
|
||
|
msg := fmt.Sprintf(format, args...)
|
||
|
pc, fn, line, _ := runtime.Caller(1)
|
||
|
msg = fmt.Sprintf("%s: %d: %s: %s", fn, line, runtime.FuncForPC(pc).Name(), msg)
|
||
|
Log.Crit(msg)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func PrintStack() {
|
||
|
buf := make([]byte, 1<<16)
|
||
|
runtime.Stack(buf, true)
|
||
|
Errorf("%s", buf)
|
||
|
}
|