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.