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)
|
|
}
|