summaryrefslogtreecommitdiff
path: root/vendor/github.com/fluffle/goirc/logging/logging.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/fluffle/goirc/logging/logging.go')
-rw-r--r--vendor/github.com/fluffle/goirc/logging/logging.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/vendor/github.com/fluffle/goirc/logging/logging.go b/vendor/github.com/fluffle/goirc/logging/logging.go
new file mode 100644
index 0000000..bd54416
--- /dev/null
+++ b/vendor/github.com/fluffle/goirc/logging/logging.go
@@ -0,0 +1,43 @@
+package logging
+
+// The IRC client will log things using these methods
+type Logger interface {
+ // Debug logging of raw socket comms to/from server.
+ Debug(format string, args ...interface{})
+ // Informational logging about client behaviour.
+ Info(format string, args ...interface{})
+ // Warnings of inconsistent or unexpected data, mostly
+ // related to state tracking of IRC nicks/chans.
+ Warn(format string, args ...interface{})
+ // Errors, mostly to do with network communication.
+ Error(format string, args ...interface{})
+}
+
+// By default we do no logging. Logging is enabled or disabled
+// at the package level, since I'm lazy and re-re-reorganising
+// my code to pass a per-client-struct Logger around to all the
+// state objects is a pain in the arse.
+var logger Logger = nullLogger{}
+
+// SetLogger sets the internal goirc Logger to l. If l is nil,
+// a dummy logger that does nothing is installed instead.
+func SetLogger(l Logger) {
+ if l == nil {
+ logger = nullLogger{}
+ } else {
+ logger = l
+ }
+}
+
+// A nullLogger does nothing while fulfilling Logger.
+type nullLogger struct{}
+func (nl nullLogger) Debug(f string, a ...interface{}) {}
+func (nl nullLogger) Info(f string, a ...interface{}) {}
+func (nl nullLogger) Warn(f string, a ...interface{}) {}
+func (nl nullLogger) Error(f string, a ...interface{}) {}
+
+// Shim functions so that the package can be used directly
+func Debug(f string, a ...interface{}) { logger.Debug(f, a...) }
+func Info(f string, a ...interface{}) { logger.Info(f, a...) }
+func Warn(f string, a ...interface{}) { logger.Warn(f, a...) }
+func Error(f string, a ...interface{}) { logger.Error(f, a...) }