Implement a log wrapper

This commit is contained in:
Eugene Bujak 2018-12-29 17:23:08 +03:00
parent 7acb107cbf
commit 7463e54258
1 changed files with 35 additions and 0 deletions

35
log/log.go Normal file
View File

@ -0,0 +1,35 @@
// Wrapper for standard library log, with the only difference is that it has extra function Tracef() and optional verbose flag to enable output from that.
package log
import (
"fmt"
"log"
"os"
"path"
"runtime"
"strings"
)
var Verbose = false
// Printf calls Output to print to the standard logger.
// Arguments are handled in the manner of fmt.Printf.
func Printf(format string, v ...interface{}) {
log.Printf(format, v...)
}
func Tracef(format string, v ...interface{}) {
if Verbose {
pc := make([]uintptr, 10) // at least 1 entry needed
runtime.Callers(2, pc)
f := runtime.FuncForPC(pc[0])
var buf strings.Builder
buf.WriteString(fmt.Sprintf("%s(): ", path.Base(f.Name())))
text := fmt.Sprintf(format, v...)
buf.WriteString(text)
if len(text) == 0 || text[len(text)-1] != '\n' {
buf.WriteRune('\n')
}
fmt.Fprint(os.Stderr, buf.String())
}
}