Browse Source

Add support for custom logging behaviour. (#465)

NamedKitten 7 years ago
parent
commit
d30b33abfa
2 changed files with 17 additions and 9 deletions
  1. 1 1
      discord.go
  2. 16 8
      logging.go

+ 1 - 1
discord.go

@@ -21,7 +21,7 @@ import (
 )
 
 // VERSION of DiscordGo, follows Semantic Versioning. (http://semver.org/)
-const VERSION = "0.17.0-dev"
+const VERSION = "0.17.0"
 
 // ErrMFA will be risen by New when the user has 2FA.
 var ErrMFA = errors.New("account has 2FA enabled")

+ 16 - 8
logging.go

@@ -34,6 +34,9 @@ const (
 	LogDebug
 )
 
+// Logger can be used to replace the standard logging for discordgo
+var Logger func(msgL, caller int, format string, a ...interface{})
+
 // msglog provides package wide logging consistancy for discordgo
 // the format, a...  portion this command follows that of fmt.Printf
 //   msgL   : LogLevel of the message
@@ -42,18 +45,23 @@ const (
 //   a ...  : comma seperated list of values to pass
 func msglog(msgL, caller int, format string, a ...interface{}) {
 
-	pc, file, line, _ := runtime.Caller(caller)
+	if Logger != nil {
+		Logger(msgL, caller, format, a)
+	} else { 
+
+		pc, file, line, _ := runtime.Caller(caller)
 
-	files := strings.Split(file, "/")
-	file = files[len(files)-1]
+		files := strings.Split(file, "/")
+		file = files[len(files)-1]
 
-	name := runtime.FuncForPC(pc).Name()
-	fns := strings.Split(name, ".")
-	name = fns[len(fns)-1]
+		name := runtime.FuncForPC(pc).Name()
+		fns := strings.Split(name, ".")
+		name = fns[len(fns)-1]
 
-	msg := fmt.Sprintf(format, a...)
+		msg := fmt.Sprintf(format, a...)
 
-	log.Printf("[DG%d] %s:%d:%s() %s\n", msgL, file, line, name, msg)
+		log.Printf("[DG%d] %s:%d:%s() %s\n", msgL, file, line, name, msg)
+	}
 }
 
 // helper function that wraps msglog for the Session struct