Skip to content

Instantly share code, notes, and snippets.

@polds
Created April 28, 2014 17:20
Show Gist options
  • Save polds/11378372 to your computer and use it in GitHub Desktop.
Save polds/11378372 to your computer and use it in GitHub Desktop.
Golang Papertrail

Usage

go build log.go
./log --port="1337" 
./log --port="-1" # Prefer local logger
package main
import (
"fmt"
"net"
"os"
"time"
"flag"
)
const (
APP = "my_app"
format = "Jan 2 15:04:05"
INFO = "INFO"
ERROR = "ERROR"
NOTICE = "NOTICE"
)
var (
papertrail = flag.String("port", "1337", "Papertrail port to send to, set to -1 to disable Papertrail logging")
date = time.Now().Format(format)
)
func init() {
flag.Parse()
}
func main() {
log(INFO, "Hello from papertrail")
log(ERROR, "Something bad happened")
log(NOTICE, "Important")
}
func logMsg(typ, msg string) string {
return fmt.Sprintf("<22> %s %s: [%s] %s", date, APP, typ, msg)
}
func log(typ, msg string) {
if *papertrail == "-1" {
fmt.Fprintln(os.Stdout, logMsg(typ, msg))
return
}
conn, err := net.Dial("udp", "logs.papertrailapp.com:"+*papertrail)
if err != nil {
fmt.Fprintf(os.Stderr, "%s %s: [%s] %s\n", date, APP, ERROR, err)
return
}
_, err = conn.Write([]byte(logMsg(typ, msg)))
if err != nil {
fmt.Fprintf(os.Stderr, "%s %s: [%s] %s\n", date, APP, ERROR, err)
conn.Close()
return
}
conn.Close()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment