github.com/DiversionCompany/notify@v0.9.9/debug.go (about) 1 // Copyright (c) 2014-2015 The Notify Authors. All rights reserved. 2 // Use of this source code is governed by the MIT license that can be 3 // found in the LICENSE file. 4 5 package notify 6 7 import ( 8 "log" 9 "os" 10 "runtime" 11 "strings" 12 ) 13 14 var dbgprint func(...interface{}) 15 16 var dbgprintf func(string, ...interface{}) 17 18 func dbgcallstack(max int) []string { 19 pc, stack := make([]uintptr, max), make([]string, 0, max) 20 runtime.Callers(2, pc) 21 for _, pc := range pc { 22 if f := runtime.FuncForPC(pc); f != nil { 23 fname := f.Name() 24 idx := strings.LastIndex(fname, string(os.PathSeparator)) 25 if idx != -1 { 26 stack = append(stack, fname[idx+1:]) 27 } else { 28 stack = append(stack, fname) 29 } 30 } 31 } 32 return stack 33 } 34 35 func SetLogger(print func(...interface{}), printf func(string, ...interface{})) { 36 dbgprint = print 37 dbgprintf = printf 38 } 39 40 func init() { 41 if _, ok := os.LookupEnv("NOTIFY_DEBUG"); ok || debugTag { 42 log.SetOutput(os.Stdout) 43 log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds) 44 dbgprint = func(v ...interface{}) { 45 v = append([]interface{}{"[D] "}, v...) 46 log.Println(v...) 47 } 48 dbgprintf = func(format string, v ...interface{}) { 49 format = "[D] " + format 50 log.Printf(format, v...) 51 } 52 return 53 } 54 dbgprint = func(v ...interface{}) {} 55 dbgprintf = func(format string, v ...interface{}) {} 56 }