I see that log.SetFlags(log.LstdFlags | log.Lshortfile)
enables line numbers for all log
output. But is there a way to enable line numbers just for error objects, Fatal
, and Fatalf
?
There is not any way to enable line numbers just for Fatal
and Fatalf
funcs. However, you can use struct embedding to customize it like so:
package main
import (
"io"
"log"
"os"
)
type MyLog struct {
*log.Logger
fatal *log.Logger
}
func New(out io.Writer, prefix string, flag int) *MyLog {
l := &MyLog{
Logger: log.New(out, prefix, flag),
fatal: log.New(out, prefix, flag|log.LstdFlags|log.Lshortfile),
}
return l
}
func (l *MyLog) Fatal(v ...interface{}) {
l.fatal.Fatal(v...)
}
func main() {
logger := New(os.Stderr, "logger: ", log.Lshortfile)
logger.Print("Hello, log file!")
logger.Fatal("Hello, log file!")
}
1 Like
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.