From 1f29da565f2ee34f5937ed437951c8e4845b0b1b Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Thu, 23 May 2019 06:59:22 -0400 Subject: [PATCH] Include calling filename and line # in error logs ...instead of the filename and line number of the Printf call in log.Error() --- log/log.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/log/log.go b/log/log.go index ec37124..dac5925 100644 --- a/log/log.go +++ b/log/log.go @@ -2,8 +2,10 @@ package log import ( + "fmt" "log" "os" + "runtime" ) var ( @@ -13,7 +15,7 @@ var ( func init() { InfoLog = log.New(os.Stdout, "", log.Ldate|log.Ltime) - ErrorLog = log.New(os.Stderr, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile) + ErrorLog = log.New(os.Stderr, "ERROR: ", log.Ldate|log.Ltime) } // Info logs an informational message to Stdout. @@ -23,5 +25,18 @@ func Info(s string, v ...interface{}) { // Error logs an error to Stderr. func Error(s string, v ...interface{}) { - ErrorLog.Printf(s, v...) + // Include original caller information + _, file, line, _ := runtime.Caller(1) + + // Determine short filename (from standard log package) + short := file + for i := len(file) - 1; i > 0; i-- { + if file[i] == '/' { + short = file[i+1:] + break + } + } + file = short + + ErrorLog.Printf(fmt.Sprintf("%s:%d: ", short, line)+s, v...) }