GitXplorerGitXplorer
t

grohl

public
165 stars
11 forks
0 issues

Commits

List of commits on branch master.
Unverified
f4613feb389efa6e147b705e2671ad4e42bb7ac3

_statter uses CurrentStatter when possible

ttechnoweenie committed 10 years ago
Unverified
b8eeac711db06b2fa1c102d67f80466f9ae972d7

Merge pull request #18 from technoweenie/error-wrapping

ttechnoweenie committed 10 years ago
Unverified
6ec0d82a7e693da0c9d265b8aea0a0cbebf64410

rename type to *grohl.Err, to remove conflict with Error()

ttechnoweenie committed 10 years ago
Unverified
dfd30734832b5bf6462628f03d6c7a4e73a2e9d8

use sync.Pool to get the 1MB byte buffers

ttechnoweenie committed 10 years ago
Unverified
947226807b420258d932bacc1dd8d6fdc2b17914

teach the ErrorReporter about *grohl.Error

ttechnoweenie committed 10 years ago
Unverified
6e7f3a2ce5eae9bc48b055d7530650cb033d7879

add wrapped error structs

ttechnoweenie committed 10 years ago

README

The README file for this repository.

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

  1. Fork the project on GitHub.
  2. Make your feature addition or bug fix.
  3. Add tests for it. This is important so I don't break it in a future version unintentionally.
  4. 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)
  5. Send me a pull request. Bonus points for topic branches.