Skip to content

Instantly share code, notes, and snippets.

@cirocosta
Created May 25, 2017 15:05
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cirocosta/0ca74af1d9700aad5ec40425ef587640 to your computer and use it in GitHub Desktop.
Save cirocosta/0ca74af1d9700aad5ec40425ef587640 to your computer and use it in GitHub Desktop.
Logrus - Writes logs with level greater than error to stderr and all others (errors included) to a file in json format
package main
import (
"fmt"
"os"
log "github.com/sirupsen/logrus"
)
type MyHook struct{}
func (h *MyHook) Levels() []log.Level {
return []log.Level{
log.WarnLevel,
log.ErrorLevel,
log.FatalLevel,
log.PanicLevel,
}
}
var fmter = new(log.TextFormatter)
func (h *MyHook) Fire(entry *log.Entry) (err error) {
line, err := fmter.Format(entry)
if err == nil {
fmt.Fprintf(os.Stderr, string(line))
}
return
}
func init() {
log.SetFormatter(&log.JSONFormatter{})
f, err := os.OpenFile(
"./log",
os.O_APPEND|os.O_WRONLY|os.O_CREATE,
0600)
if err != nil {
panic(err)
}
log.SetOutput(f)
log.AddHook(&MyHook{})
}
func main() {
log.WithFields(log.Fields{
"animal": "walrus",
"size": 10,
}).Debug("A group of walrus emerges from the ocean")
log.WithFields(log.Fields{
"animal": "walrus",
"size": 10,
}).Info("A group of walrus emerges from the ocean")
log.WithFields(log.Fields{
"animal": "walrus",
"size": 10,
}).Info("A group of walrus emerges from the ocean")
log.WithFields(log.Fields{
"omg": true,
"number": 122,
}).Warn("The group's number increased tremendously!")
log.WithFields(log.Fields{
"omg": true,
"number": 122,
}).Warn("The group's number increased tremendously!")
log.WithFields(log.Fields{
"omg": true,
"number": 122,
}).Warn("The group's number increased tremendously!")
log.WithFields(log.Fields{
"omg": true,
"number": 100,
}).Fatal("The ice breaks!")
}
@cirocosta
Copy link
Author

cat log 
{"animal":"walrus","level":"info","msg":"A group of walrus emerges from the ocean","size":10,"time":"2017-05-25T12:05:41-03:00"}
{"animal":"walrus","level":"info","msg":"A group of walrus emerges from the ocean","size":10,"time":"2017-05-25T12:05:41-03:00"}
{"level":"warning","msg":"The group's number increased tremendously!","number":122,"omg":true,"time":"2017-05-25T12:05:41-03:00"}
{"level":"warning","msg":"The group's number increased tremendously!","number":122,"omg":true,"time":"2017-05-25T12:05:41-03:00"}
{"level":"warning","msg":"The group's number increased tremendously!","number":122,"omg":true,"time":"2017-05-25T12:05:41-03:00"}
{"level":"fatal","msg":"The ice breaks!","number":100,"omg":true,"time":"2017-05-25T12:05:41-03:00"}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment