Original post

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 crit-go/logging.Info() whereas i want it to print INFO[0000]myfile.go:39 crit-go/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...)
}