-
-
Save boskiv/c558dfc6de4fcc2e0bd006183f3c3ff1 to your computer and use it in GitHub Desktop.
logrus wrapper
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package log | |
import ( | |
"fmt" | |
"github.com/Sirupsen/logrus" | |
"runtime" | |
"strings" | |
) | |
var logger = logrus.New() | |
// Fields wraps logrus.Fields, which is a map[string]interface{} | |
type Fields logrus.Fields | |
func SetLogLevel(level logrus.Level) { | |
logger.Level = level | |
} | |
func SetLogFormatter(formatter logrus.Formatter) { | |
logger.Formatter = formatter | |
} | |
// Debug logs a message at level Debug on the standard logger. | |
func Debug(args ...interface{}) { | |
if logger.Level >= logrus.DebugLevel { | |
entry := logger.WithFields(logrus.Fields{}) | |
entry.Data["file"] = fileInfo(2) | |
entry.Debug(args) | |
} | |
} | |
// Debug logs a message with fields at level Debug on the standard logger. | |
func DebugWithFields(l interface{}, f Fields) { | |
if logger.Level >= logrus.DebugLevel { | |
entry := logger.WithFields(logrus.Fields(f)) | |
entry.Data["file"] = fileInfo(2) | |
entry.Debug(l) | |
} | |
} | |
// Info logs a message at level Info on the standard logger. | |
func Info(args ...interface{}) { | |
if logger.Level >= logrus.InfoLevel { | |
entry := logger.WithFields(logrus.Fields{}) | |
entry.Data["file"] = fileInfo(2) | |
entry.Info(args...) | |
} | |
} | |
// Debug logs a message with fields at level Debug on the standard logger. | |
func InfoWithFields(l interface{}, f Fields) { | |
if logger.Level >= logrus.InfoLevel { | |
entry := logger.WithFields(logrus.Fields(f)) | |
entry.Data["file"] = fileInfo(2) | |
entry.Info(l) | |
} | |
} | |
// Warn logs a message at level Warn on the standard logger. | |
func Warn(args ...interface{}) { | |
if logger.Level >= logrus.WarnLevel { | |
entry := logger.WithFields(logrus.Fields{}) | |
entry.Data["file"] = fileInfo(2) | |
entry.Warn(args...) | |
} | |
} | |
// Debug logs a message with fields at level Debug on the standard logger. | |
func WarnWithFields(l interface{}, f Fields) { | |
if logger.Level >= logrus.WarnLevel { | |
entry := logger.WithFields(logrus.Fields(f)) | |
entry.Data["file"] = fileInfo(2) | |
entry.Warn(l) | |
} | |
} | |
// Error logs a message at level Error on the standard logger. | |
func Error(args ...interface{}) { | |
if logger.Level >= logrus.ErrorLevel { | |
entry := logger.WithFields(logrus.Fields{}) | |
entry.Data["file"] = fileInfo(2) | |
entry.Error(args...) | |
} | |
} | |
// Debug logs a message with fields at level Debug on the standard logger. | |
func ErrorWithFields(l interface{}, f Fields) { | |
if logger.Level >= logrus.ErrorLevel { | |
entry := logger.WithFields(logrus.Fields(f)) | |
entry.Data["file"] = fileInfo(2) | |
entry.Error(l) | |
} | |
} | |
// Fatal logs a message at level Fatal on the standard logger. | |
func Fatal(args ...interface{}) { | |
if logger.Level >= logrus.FatalLevel { | |
entry := logger.WithFields(logrus.Fields{}) | |
entry.Data["file"] = fileInfo(2) | |
entry.Fatal(args...) | |
} | |
} | |
// Debug logs a message with fields at level Debug on the standard logger. | |
func FatalWithFields(l interface{}, f Fields) { | |
if logger.Level >= logrus.FatalLevel { | |
entry := logger.WithFields(logrus.Fields(f)) | |
entry.Data["file"] = fileInfo(2) | |
entry.Fatal(l) | |
} | |
} | |
// Panic logs a message at level Panic on the standard logger. | |
func Panic(args ...interface{}) { | |
if logger.Level >= logrus.PanicLevel { | |
entry := logger.WithFields(logrus.Fields{}) | |
entry.Data["file"] = fileInfo(2) | |
entry.Panic(args...) | |
} | |
} | |
// Debug logs a message with fields at level Debug on the standard logger. | |
func PanicWithFields(l interface{}, f Fields) { | |
if logger.Level >= logrus.PanicLevel { | |
entry := logger.WithFields(logrus.Fields(f)) | |
entry.Data["file"] = fileInfo(2) | |
entry.Panic(l) | |
} | |
} | |
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) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment