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() | |
| } |