Grohl
Grohl is an opinionated library for gathering metrics and data about how your applications are running in production. It does this through writing logs in a key=value structure. It also provides interfaces for sending exceptions or metrics to external services.
This is a Go version of asenchi/scrolls. The name for this library came from mashing the words "go" and "scrolls" together. Also, Dave Grohl (lead singer of Foo Fighters) is passionate about event driven metrics.
See this blog post for the rationale behind this library.
Installation
$ go get github.com/technoweenie/grohl
Then import it:
import "github.com/technoweenie/grohl"
Usage
Grohl takes almost no setup. Everything writes to STDOUT by default. Here's a quick http server example:
package main
import (
"github.com/technoweenie/grohl"
"log"
"net/http"
)
func main() {
grohl.AddContext("app", "example")
http.HandleFunc("/foo", func(w http.ResponseWriter, r *http.Request) {
grohl.Log(grohl.Data{"path": r.URL.Path})
fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
This writes a log on every HTTP request like:
now=2013-10-14T15:04:05-0700 app=example path=/foo
See the godocs for details on metrics, statsd integration, and custom error reporters.
Note on Patches/Pull Requests
- Fork the project on GitHub.
- Make your feature addition or bug fix.
- Add tests for it. This is important so I don't break it in a future version unintentionally.
- Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
- Send me a pull request. Bonus points for topic branches.