improve style for stack output for glog/gerror

This commit is contained in:
John
2019-07-16 19:49:21 +08:00
parent 185f9efb9c
commit f43d252d08
3 changed files with 13 additions and 4 deletions

View File

@ -102,14 +102,14 @@ func (err *Error) Stack() string {
index := 1
buffer := bytes.NewBuffer(nil)
for loop != nil {
buffer.WriteString(fmt.Sprintf("%d.\t%-v\n", index, loop))
buffer.WriteString(fmt.Sprintf("%d. %-v\n", index, loop))
index++
formatSubStack(loop.stack, buffer)
if loop.error != nil {
if e, ok := loop.error.(*Error); ok {
loop = e
} else {
buffer.WriteString(fmt.Sprintf("%d.\t%s\n", index, loop.error.Error()))
buffer.WriteString(fmt.Sprintf("%d. %s\n", index, loop.error.Error()))
index++
break
}
@ -123,6 +123,7 @@ func (err *Error) Stack() string {
// formatSubStack formats the stack for error.
func formatSubStack(st stack, buffer *bytes.Buffer) {
index := 1
space := " "
for _, p := range st {
if fn := runtime.FuncForPC(p - 1); fn != nil {
file, line := fn.FileLine(p - 1)
@ -132,7 +133,10 @@ func formatSubStack(st stack, buffer *bytes.Buffer) {
if goRootForFilter != "" && len(file) >= len(goRootForFilter) && file[0:len(goRootForFilter)] == goRootForFilter {
continue
}
buffer.WriteString(fmt.Sprintf("\t%d).\t%s\n\t\t%s:%d\n", index, fn.Name(), file, line))
if index > 9 {
space = " "
}
buffer.WriteString(fmt.Sprintf(" %d).%s%s\n \t%s:%d\n", index, space, fn.Name(), file, line))
index++
}
}

View File

@ -52,6 +52,7 @@ func StackWithFilter(filter string, skip ...int) string {
number = skip[0]
}
name := ""
space := " "
index := 1
buffer := bytes.NewBuffer(nil)
for i := callerFromIndex() + number; i < gMAX_DEPTH; i++ {
@ -67,7 +68,10 @@ func StackWithFilter(filter string, skip ...int) string {
} else {
name = fn.Name()
}
buffer.WriteString(fmt.Sprintf("%d.\t%s\n\t%s:%d\n", index, name, file, line))
if index > 9 {
space = " "
}
buffer.WriteString(fmt.Sprintf("%d.%s%s\n %s:%d\n", index, space, name, file, line))
index++
} else {
break

View File

@ -268,6 +268,7 @@ func (l *Logger) print(std io.Writer, lead string, value ...interface{}) {
}
if len(valueStr) > 0 {
if valueStr[len(valueStr)-1] == '\n' {
// Remove one blank line(\n\n).
if tempStr[0] == '\n' {
valueStr += tempStr[1:]
} else {