Cleanup stack trace in error logs (#6045)

Add compile time GOROOT path to the list of prefix
of file paths to be removed.

Add webhandler function names to the slice that
stores function names to terminate logging.
master
kannappanr 7 years ago committed by GitHub
parent 81ee79b042
commit 577d10674d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      buildscripts/gen-ldflags.go
  2. 3
      cmd/build-constants.go
  3. 2
      cmd/gateway-main.go
  4. 50
      cmd/logger/logger.go
  5. 13
      cmd/logger/utils.go
  6. 2
      cmd/server-main.go

@ -33,6 +33,7 @@ func genLDFlags(version string) string {
ldflagsStr += " -X github.com/minio/minio/cmd.CommitID=" + commitID() ldflagsStr += " -X github.com/minio/minio/cmd.CommitID=" + commitID()
ldflagsStr += " -X github.com/minio/minio/cmd.ShortCommitID=" + commitID()[:12] ldflagsStr += " -X github.com/minio/minio/cmd.ShortCommitID=" + commitID()[:12]
ldflagsStr += " -X github.com/minio/minio/cmd.GOPATH=" + os.Getenv("GOPATH") ldflagsStr += " -X github.com/minio/minio/cmd.GOPATH=" + os.Getenv("GOPATH")
ldflagsStr += " -X github.com/minio/minio/cmd.GOROOT=" + os.Getenv("GOROOT")
return ldflagsStr return ldflagsStr
} }

@ -22,6 +22,9 @@ var (
// GOPATH - GOPATH value at the time of build. // GOPATH - GOPATH value at the time of build.
GOPATH = "" GOPATH = ""
// GOROOT - GOROOT value at the time of build.
GOROOT = ""
// Go get development tag. // Go get development tag.
goGetTag = "DEVELOPMENT.GOGET" goGetTag = "DEVELOPMENT.GOGET"

@ -34,7 +34,7 @@ import (
) )
func init() { func init() {
logger.Init(GOPATH) logger.Init(GOPATH, GOROOT)
logger.RegisterUIError(fmtError) logger.RegisterUIError(fmtError)
} }

@ -52,6 +52,25 @@ var matchingFuncNames = [...]string{
"http.HandlerFunc.ServeHTTP", "http.HandlerFunc.ServeHTTP",
"cmd.serverMain", "cmd.serverMain",
"cmd.StartGateway", "cmd.StartGateway",
"cmd.(*webAPIHandlers).ListBuckets",
"cmd.(*webAPIHandlers).MakeBucket",
"cmd.(*webAPIHandlers).DeleteBucket",
"cmd.(*webAPIHandlers).ListObjects",
"cmd.(*webAPIHandlers).RemoveObject",
"cmd.(*webAPIHandlers).Login",
"cmd.(*webAPIHandlers).GenerateAuth",
"cmd.(*webAPIHandlers).SetAuth",
"cmd.(*webAPIHandlers).GetAuth",
"cmd.(*webAPIHandlers).CreateURLToken",
"cmd.(*webAPIHandlers).Upload",
"cmd.(*webAPIHandlers).Download",
"cmd.(*webAPIHandlers).DownloadZip",
"cmd.(*webAPIHandlers).GetBucketPolicy",
"cmd.(*webAPIHandlers).ListAllBucketPolicies",
"cmd.(*webAPIHandlers).SetBucketPolicy",
"cmd.(*webAPIHandlers).PresignedGet",
"cmd.(*webAPIHandlers).ServerInfo",
"cmd.(*webAPIHandlers).StorageInfo",
// add more here .. // add more here ..
} }
@ -142,22 +161,24 @@ func RegisterUIError(f func(string, error, bool) string) {
// and GOROOT directories. Also append github.com/minio/minio // and GOROOT directories. Also append github.com/minio/minio
// This is done to clean up the filename, when stack trace is // This is done to clean up the filename, when stack trace is
// displayed when an error happens. // displayed when an error happens.
func Init(goPath string) { func Init(goPath string, goRoot string) {
var goPathList []string var goPathList []string
var goRootList []string
var defaultgoPathList []string var defaultgoPathList []string
var defaultgoRootList []string
pathSeperator := ":"
// Add all possible GOPATH paths into trimStrings // Add all possible GOPATH paths into trimStrings
// Split GOPATH depending on the OS type // Split GOPATH depending on the OS type
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
goPathList = strings.Split(goPath, ";") pathSeperator = ";"
defaultgoPathList = strings.Split(build.Default.GOPATH, ";")
} else {
// All other types of OSs
goPathList = strings.Split(goPath, ":")
defaultgoPathList = strings.Split(build.Default.GOPATH, ":")
} }
goPathList = strings.Split(goPath, pathSeperator)
goRootList = strings.Split(goRoot, pathSeperator)
defaultgoPathList = strings.Split(build.Default.GOPATH, pathSeperator)
defaultgoRootList = strings.Split(build.Default.GOROOT, pathSeperator)
// Add trim string "{GOROOT}/src/" into trimStrings // Add trim string "{GOROOT}/src/" into trimStrings
trimStrings = []string{filepath.Join(runtime.GOROOT(), "src") + string(filepath.Separator)} trimStrings = []string{filepath.Join(runtime.GOROOT(), "src") + string(filepath.Separator)}
@ -167,10 +188,21 @@ func Init(goPath string) {
trimStrings = append(trimStrings, filepath.Join(goPathString, "src")+string(filepath.Separator)) trimStrings = append(trimStrings, filepath.Join(goPathString, "src")+string(filepath.Separator))
} }
for _, goRootString := range goRootList {
trimStrings = append(trimStrings, filepath.Join(goRootString, "src")+string(filepath.Separator))
}
for _, defaultgoPathString := range defaultgoPathList { for _, defaultgoPathString := range defaultgoPathList {
trimStrings = append(trimStrings, filepath.Join(defaultgoPathString, "src")+string(filepath.Separator)) trimStrings = append(trimStrings, filepath.Join(defaultgoPathString, "src")+string(filepath.Separator))
} }
for _, defaultgoRootString := range defaultgoRootList {
trimStrings = append(trimStrings, filepath.Join(defaultgoRootString, "src")+string(filepath.Separator))
}
// Remove duplicate entries.
trimStrings = uniqueEntries(trimStrings)
// Add "github.com/minio/minio" as the last to cover // Add "github.com/minio/minio" as the last to cover
// paths like "{GOROOT}/src/github.com/minio/minio" // paths like "{GOROOT}/src/github.com/minio/minio"
// and "{GOPATH}/src/github.com/minio/minio" // and "{GOPATH}/src/github.com/minio/minio"
@ -200,7 +232,7 @@ func getTrace(traceLevel int) []string {
var trace []string var trace []string
pc, file, lineNumber, ok := runtime.Caller(traceLevel) pc, file, lineNumber, ok := runtime.Caller(traceLevel)
for ok { for ok && file != "" {
// Clean up the common prefixes // Clean up the common prefixes
file = trimTrace(file) file = trimTrace(file)
// Get the function name // Get the function name

@ -50,3 +50,16 @@ func ansiSaveAttributes() {
func ansiRestoreAttributes() { func ansiRestoreAttributes() {
ansiEscape("8") ansiEscape("8")
} }
func uniqueEntries(paths []string) []string {
found := map[string]bool{}
unqiue := []string{}
for v := range paths {
if _, ok := found[paths[v]]; !ok {
found[paths[v]] = true
unqiue = append(unqiue, paths[v])
}
}
return unqiue
}

@ -33,7 +33,7 @@ import (
) )
func init() { func init() {
logger.Init(GOPATH) logger.Init(GOPATH, GOROOT)
logger.RegisterUIError(fmtError) logger.RegisterUIError(fmtError)
} }

Loading…
Cancel
Save