1
0
mirror of https://github.com/taigrr/log-socket synced 2025-01-18 04:53:14 -08:00
log-socket/main.go

112 lines
2.1 KiB
Go

package lambo_log_socket
import (
"fmt"
"runtime"
"strings"
"github.com/sirupsen/logrus"
)
type Level int
const (
LTrace Level = iota
LDebug
LInfo
LWarn
LError
LPanic
LFatal
)
var logLevel Level
var logger = logrus.New()
func init() {
logger.SetLevel(logrus.DebugLevel)
}
// SetLogLevel set log level of logger
func SetLogLevel(level Level) {
logLevel = level
}
// Trace prints out logs on trace level
func Trace(args ...interface{}) {
if logLevel >= LTrace {
entry := logger.WithFields(logrus.Fields{})
entry.Data["file"] = fileInfo(2)
entry.Debug(args...)
}
}
// Debug prints out logs on debug level
func Debug(args ...interface{}) {
if logLevel >= LDebug {
entry := logger.WithFields(logrus.Fields{})
entry.Data["file"] = fileInfo(2)
entry.Debug(args...)
}
}
// Info prints out logs on info level
func Info(args ...interface{}) {
if logLevel >= LInfo {
entry := logger.WithFields(logrus.Fields{})
entry.Data["file"] = fileInfo(2)
entry.Info(args...)
}
}
// Warn prints out logs on warn level
func Warn(args ...interface{}) {
if logLevel >= LWarn {
entry := logger.WithFields(logrus.Fields{})
entry.Data["file"] = fileInfo(2)
entry.Warn(args...)
}
}
// Error prints out logs on error level
func Error(args ...interface{}) {
if logLevel >= LError {
entry := logger.WithFields(logrus.Fields{})
entry.Data["file"] = fileInfo(2)
entry.Error(args...)
}
}
// Fatal prints out logs on fatal level
func Fatal(args ...interface{}) {
if logLevel >= LFatal {
entry := logger.WithFields(logrus.Fields{})
entry.Data["file"] = fileInfo(2)
entry.Fatal(args...)
}
}
// Panic prints out logs on panic level
func Panic(args ...interface{}) {
if logLevel >= LPanic {
entry := logger.WithFields(logrus.Fields{})
entry.Data["file"] = fileInfo(2)
entry.Panic(args...)
}
}
// fileInfo for getting which line in which file
func fileInfo(skip int) string {
_, file, line, ok := runtime.Caller(skip)
if !ok {
file = "<???>"
line = 1
} else {
slash := strings.LastIndex(file, "/")
if slash >= 0 {
file = file[slash+1:]
}
}
return fmt.Sprintf("%s:%d", file, line)
}