With the standard/stdlib log package even if i write a wrapper i can get the actual line no using log.Output
but i want to use logrus and with logrus i cannot seem a way to print the actual line. Instead logrus prints INFO[0000]logging.go:39 myfolder/logging.Info()
whereas i want it to print INFO[0000]myfile.go:39 myfolder/myfile.myfunction()
This is my custom logger code, i want this to print the actual line no of the error rather than it printing this files line no.
package logging
import (
"fmt"
"github.com/sirupsen/logrus"
"os"
"path"
"runtime"
)
var (
log *logrus.Logger
)
func init() {
log = logrus.New()
log.SetReportCaller(true)
log.Formatter = &logrus.TextFormatter{
CallerPrettyfier: func(f *runtime.Frame) (string, string) {
filename := path.Base(f.File)
return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
},
}
log.Println("hello world")
}
// Info ...
func Info(args ...interface{}) {
log.Info(args...)
}
// Warn ...
func Warn(args ...interface{}) {
log.Warn(args...)
}
// Error ...
func Error(args ...interface{}) {
log.Error(args...)
}
// Fatal
func Fatal(args ...interface{}) {
log.Fatal(args...)
}