From ec357343a35b834a1d9ab96b50f7c28cc4caf189 Mon Sep 17 00:00:00 2001 From: Piotr Zduniak Date: Sat, 3 Jan 2015 02:18:34 +0100 Subject: [PATCH] Added loggly support --- env/config.go | 2 ++ main.go | 4 ++++ setup/loggly.go | 24 ++++++++++++++++++++++++ setup/setup.go | 8 ++++++++ 4 files changed, 38 insertions(+) create mode 100644 setup/loggly.go diff --git a/env/config.go b/env/config.go index 6b655df..ce13ae1 100644 --- a/env/config.go +++ b/env/config.go @@ -23,4 +23,6 @@ type Flags struct { YubiCloudID string YubiCloudKey string + + LogglyToken string } diff --git a/main.go b/main.go index 787ee23..db4f3e6 100644 --- a/main.go +++ b/main.go @@ -66,6 +66,8 @@ var ( // YubiCloud params yubiCloudID = flag.String("yubicloud_id", "", "YubiCloud API id") yubiCloudKey = flag.String("yubicloud_key", "", "YubiCloud API key") + // Loggly URL + logglyToken = flag.String("loggly_token", "", "Loggly token") ) func main() { @@ -95,6 +97,8 @@ func main() { YubiCloudID: *yubiCloudID, YubiCloudKey: *yubiCloudKey, + + LogglyToken: *logglyToken, } // Generate a mux diff --git a/setup/loggly.go b/setup/loggly.go new file mode 100644 index 0000000..4d7ec83 --- /dev/null +++ b/setup/loggly.go @@ -0,0 +1,24 @@ +package setup + +import ( + "github.com/Sirupsen/logrus" + "github.com/segmentio/go-loggly" +) + +type logglyHook struct { + Loggly *loggly.Client +} + +func (h *logglyHook) Fire(entry *logrus.Entry) error { + entry.Data["message"] = entry.Message + return h.Loggly.Send(map[string]interface{}(entry.Data)) +} + +func (h *logglyHook) Levels() []logrus.Level { + return []logrus.Level{ + logrus.WarnLevel, + logrus.ErrorLevel, + logrus.FatalLevel, + logrus.PanicLevel, + } +} diff --git a/setup/setup.go b/setup/setup.go index 44ec365..cc1a451 100644 --- a/setup/setup.go +++ b/setup/setup.go @@ -15,6 +15,7 @@ import ( "github.com/dancannon/gorethink" "github.com/googollee/go-socket.io" "github.com/rs/cors" + "github.com/segmentio/go-loggly" "github.com/zenazn/goji/web" "github.com/zenazn/goji/web/middleware" "gopkg.in/igm/sockjs-go.v2/sockjs" @@ -47,6 +48,13 @@ func PrepareMux(flags *env.Flags) *web.Mux { log.Formatter = &logrus.JSONFormatter{} } + // Install logrus hooks + if flags.LogglyToken != "" { + log.Hooks.Add(&logglyHook{ + Loggly: loggly.New(flags.LogglyToken), + }) + } + // Pass it to the environment package env.Log = log