Lorekeeper is a Go package that manages log rotation. It should work nicely with the Go standard log package.
Note: Lorekeeper is not a logging package, it only manages the log files, and should be use with other logging packages such as the standard log, slog, or logrus.
For more detailed information, please refer to the GoDoc.
Package log implements a simple logging package.
package main
import (
"log"
"github.com/trviph/lorekeeper"
)
func main() {
// Init lorekeeper, with the default configurations.
defaultKeeper, err := lorekeeper.NewKeeper()
if err != nil {
panic(err)
}
defer defaultKeeper.Close()
// Using lorekeeper with log
logger := log.New(keeper, "[INFO] ", log.Lmsgprefix|log.LstdFlags)
// Starting using the logger
logger.Printf("that's it!")
}Package slog provides structured logging, in which log records include a message, a severity level, and various other attributes expressed as key-value pairs.
package main
import (
"log/slog"
"github.com/trviph/lorekeeper"
)
func main() {
// Init lorekeeper, with the default configurations.
defaultKeeper, err := lorekeeper.NewKeeper()
if err != nil {
panic(err)
}
defer defaultKeeper.Close()
// Using lorekeeper with slog
logger := slog.New(slog.NewJSONHandler(keeper, nil))
// Starting using the logger
logger.Info("this is info", "msg", "testing")
logger.Error("this is error", "msg", "testing")
}Logrus is a structured, pluggable logging package for Go.
package main
import (
log "github.com/sirupsen/logrus"
"github.com/trviph/lorekeeper"
)
func main() {
// Init lorekeeper, with the default configurations.
defaultKeeper, err := lorekeeper.NewKeeper()
if err != nil {
panic(err)
}
defer defaultKeeper.Close()
// Using lorekeeper with logrus
logger := log.New()
logger.SetLevel(log.InfoLevel)
logger.SetOutput(defaultKeeper)
// Starting using the logger
logger.Info("this will go into the log file")
logger.Debug("this will not")
}