selectable global stack setting
parent
20a2c6e2a7
commit
c91e59456a
17
log.go
17
log.go
|
@ -23,6 +23,7 @@ const (
|
|||
var lock sync.Mutex
|
||||
|
||||
var PROD = true
|
||||
var STACKSKIP = 0
|
||||
var LEVEL = Lerror | Linfo
|
||||
|
||||
type H map[string]interface{}
|
||||
|
@ -107,19 +108,23 @@ func (l *Logger) output(lev Llevel, depth int, fields H, v ...interface{}) {
|
|||
Message: msg,
|
||||
Level: lev,
|
||||
Time: time.Now(),
|
||||
Caller: Caller(depth),
|
||||
Color: l.color,
|
||||
}
|
||||
if !PROD {
|
||||
switch lev {
|
||||
case Lerror:
|
||||
if !PROD {
|
||||
if STACKSKIP == 0 {
|
||||
data.Stack = Stack()
|
||||
} else {
|
||||
data.Stack = StackSkip(STACKSKIP)
|
||||
}
|
||||
data.Caller = Caller(depth)
|
||||
case Ldebug:
|
||||
data.Caller = Caller(depth)
|
||||
|
||||
// disable stack trace on debug
|
||||
// case Ldebug:
|
||||
// if !PROD {
|
||||
// data.Stack = stack()
|
||||
// }
|
||||
// data.Stack = Stack()
|
||||
}
|
||||
}
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
|
|
4
util.go
4
util.go
|
@ -49,7 +49,7 @@ var (
|
|||
)
|
||||
|
||||
// Stack returns a nicely formatted stack frame, skipping skip frames.
|
||||
func StackSkip(skip int) []byte {
|
||||
func StackSkip(skip int) string {
|
||||
buf := new(bytes.Buffer) // the returned data
|
||||
// As we loop, we open files and read them. These variables record the currently
|
||||
// loaded file.
|
||||
|
@ -72,7 +72,7 @@ func StackSkip(skip int) []byte {
|
|||
}
|
||||
fmt.Fprintf(buf, "\t%s: %s\n", function(pc), source(lines, line))
|
||||
}
|
||||
return buf.Bytes()
|
||||
return string(buf.Bytes())
|
||||
}
|
||||
|
||||
// function returns, if possible, the name of the function containing the PC.
|
||||
|
|
Loading…
Reference in New Issue