Skip to content

trviph/lorekeeper

Repository files navigation

Lorekeeper

Go Reference CI codecov

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.

Quick Guide

For more detailed information, please refer to the GoDoc.

With Standard log Package

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!")
}

With Standard slog Package

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

With Logrus

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

About

Lorekeeper is a Go package that handles log rotation.

Topics

Resources

License

Stars

Watchers

Forks

Languages