Skip to content

Commit

Permalink
treewide: replace log15 with zerolog (#123)
Browse files Browse the repository at this point in the history
  • Loading branch information
kalbasit authored Dec 16, 2024
1 parent a55b2d0 commit e628d2d
Show file tree
Hide file tree
Showing 18 changed files with 273 additions and 232 deletions.
1 change: 1 addition & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ linters:
- wastedassign
- whitespace
- wsl
- zerologlint
linters-settings:
gci:
# Section configuration to compare against.
Expand Down
4 changes: 2 additions & 2 deletions cmd/cmd.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package cmd

import (
"github.com/inconshreveable/log15/v3"
"github.com/rs/zerolog"
"github.com/urfave/cli/v3"
)

Expand All @@ -10,7 +10,7 @@ import (
//nolint:gochecknoglobals
var Version = "dev"

func New(logger log15.Logger) *cli.Command {
func New(logger zerolog.Logger) *cli.Command {
return &cli.Command{
Name: "ncps",
Usage: "Nix Binary Cache Proxy Service",
Expand Down
12 changes: 6 additions & 6 deletions cmd/maxprocs.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"fmt"
"time"

"github.com/inconshreveable/log15/v3"
"github.com/rs/zerolog"
"go.uber.org/automaxprocs/maxprocs"
)

Expand All @@ -14,13 +14,13 @@ import (

// autoMaxProcs automatically configures Go's runtime.GOMAXPROCS based on the
// given quota in a container.
func autoMaxProcs(ctx context.Context, d time.Duration, logger log15.Logger) error {
log := logger.New("operation", "auto-max-procs")
func autoMaxProcs(ctx context.Context, d time.Duration, logger zerolog.Logger) error {
log := logger.With().Str("operation", "auto-max-procs").Logger()

infof := diffInfof(log)
setMaxProcs := func() {
if _, err := maxprocs.Set(maxprocs.Logger(infof)); err != nil {
log.Error("failed to set GOMAXPROCS", "error", err)
log.Error().Err(err).Msg("failed to set GOMAXPROCS")
}
}
// set the gomaxprocs immediately.
Expand All @@ -39,13 +39,13 @@ func autoMaxProcs(ctx context.Context, d time.Duration, logger log15.Logger) err
}
}

func diffInfof(logger log15.Logger) func(string, ...interface{}) {
func diffInfof(logger zerolog.Logger) func(string, ...interface{}) {
var last string

return func(format string, args ...interface{}) {
msg := fmt.Sprintf(format, args...)
if msg != last {
logger.Info(msg)
logger.Info().Msg(msg)
last = msg
}
}
Expand Down
26 changes: 16 additions & 10 deletions cmd/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import (
"regexp"
"time"

"github.com/inconshreveable/log15/v3"
"github.com/robfig/cron/v3"
"github.com/rs/zerolog"
"github.com/urfave/cli/v3"
"golang.org/x/sync/errgroup"

Expand All @@ -23,12 +23,12 @@ import (
// ErrCacheMaxSizeRequired is returned if --cache-lru-schedule was given but not --cache-max-size.
var ErrCacheMaxSizeRequired = errors.New("--cache-max-size is required when --cache-lru-schedule is specified")

func serveCommand(logger log15.Logger) *cli.Command {
func serveCommand(logger zerolog.Logger) *cli.Command {
return &cli.Command{
Name: "serve",
Aliases: []string{"s"},
Usage: "serve the nix binary cache over http",
Action: serveAction(logger.New("cmd", "serve")),
Action: serveAction(logger.With().Str("cmd", "serve").Logger()),
Flags: []cli.Flag{
&cli.BoolFlag{
Name: "allow-delete",
Expand Down Expand Up @@ -101,14 +101,14 @@ func serveCommand(logger log15.Logger) *cli.Command {
}
}

func serveAction(logger log15.Logger) cli.ActionFunc {
func serveAction(logger zerolog.Logger) cli.ActionFunc {
return func(ctx context.Context, cmd *cli.Command) error {
ctx, cancel := context.WithCancel(ctx)

g, ctx := errgroup.WithContext(ctx)
defer func() {
if err := g.Wait(); err != nil {
logger.Error("error returned from g.Wait()", "error", err)
logger.Error().Err(err).Msg("error returned from g.Wait()")
}
}()

Expand Down Expand Up @@ -141,7 +141,9 @@ func serveAction(logger log15.Logger) cli.ActionFunc {
ReadHeaderTimeout: 10 * time.Second,
}

logger.Info("Server started", "server-addr", cmd.String("server-addr"))
logger.Info().
Str("server-addr", cmd.String("server-addr")).
Msg("Server started")

if err := server.ListenAndServe(); err != nil {
return fmt.Errorf("error starting the HTTP listener: %w", err)
Expand All @@ -151,7 +153,7 @@ func serveAction(logger log15.Logger) cli.ActionFunc {
}
}

func getUpstreamCaches(_ context.Context, logger log15.Logger, cmd *cli.Command) ([]upstream.Cache, error) {
func getUpstreamCaches(_ context.Context, logger zerolog.Logger, cmd *cli.Command) ([]upstream.Cache, error) {
ucSlice := cmd.StringSlice("upstream-cache")

ucs := make([]upstream.Cache, 0, len(ucSlice))
Expand Down Expand Up @@ -183,7 +185,7 @@ func getUpstreamCaches(_ context.Context, logger log15.Logger, cmd *cli.Command)
return ucs, nil
}

func createCache(logger log15.Logger, cmd *cli.Command, ucs []upstream.Cache) (*cache.Cache, error) {
func createCache(logger zerolog.Logger, cmd *cli.Command, ucs []upstream.Cache) (*cache.Cache, error) {
c, err := cache.New(logger, cmd.String("cache-hostname"), cmd.String("cache-data-path"))
if err != nil {
return nil, fmt.Errorf("error creating a new cache: %w", err)
Expand All @@ -205,7 +207,9 @@ func createCache(logger log15.Logger, cmd *cli.Command, ucs []upstream.Cache) (*
return nil, fmt.Errorf("error parsing the size: %w", err)
}

logger.Info("setting up the cache max-size", "max-size", maxSize)
logger.Info().
Uint64("max-size", maxSize).
Msg("setting up the cache max-size")

c.SetMaxSize(maxSize)

Expand All @@ -218,7 +222,9 @@ func createCache(logger log15.Logger, cmd *cli.Command, ucs []upstream.Cache) (*
}
}

logger.Info("setting up the cache timezone location", "time-zone", loc)
logger.Info().
Str("time-zone", loc.String()).
Msg("setting up the cache timezone location")

c.SetupCron(loc)

Expand Down
6 changes: 2 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@ go 1.23.3

require (
github.com/go-chi/chi/v5 v5.1.0
github.com/inconshreveable/log15/v3 v3.0.0-testing.5
github.com/klauspost/compress v1.17.11
github.com/mattn/go-colorable v0.1.13
github.com/mattn/go-sqlite3 v1.14.24
github.com/nix-community/go-nix v0.0.0-20241207090453-00891a7727c2
github.com/robfig/cron/v3 v3.0.1
github.com/rs/zerolog v1.33.0
github.com/stretchr/testify v1.10.0
github.com/urfave/cli/v3 v3.0.0-beta1
go.uber.org/automaxprocs v1.6.0
Expand All @@ -19,10 +18,9 @@ require (

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/go-stack/stack v1.8.1 // indirect
github.com/inconshreveable/log15 v3.0.0-testing.5+incompatible // indirect
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/minio/sha256-simd v1.0.1 // indirect
github.com/mr-tron/base58 v1.2.0 // indirect
Expand Down
14 changes: 8 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw=
github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4=
github.com/inconshreveable/log15 v3.0.0-testing.5+incompatible h1:VryeOTiaZfAzwx8xBcID1KlJCeoWSIpsNbSk+/D2LNk=
github.com/inconshreveable/log15 v3.0.0-testing.5+incompatible/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o=
github.com/inconshreveable/log15/v3 v3.0.0-testing.5 h1:h4e0f3kjgg+RJBlKOabrohjHe47D3bbAB9BgMrc3DYA=
github.com/inconshreveable/log15/v3 v3.0.0-testing.5/go.mod h1:3GQg1SVrLoWGfRv/kAZMsdyU5cp8eFc1P3cw+Wwku94=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY=
Expand All @@ -20,6 +16,7 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM=
Expand All @@ -34,12 +31,16 @@ github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/n
github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU=
github.com/nix-community/go-nix v0.0.0-20241207090453-00891a7727c2 h1:KVBAi/cviLGNx7EjhPog1a9dYVvmoI4Ha+ullP4Z5TI=
github.com/nix-community/go-nix v0.0.0-20241207090453-00891a7727c2/go.mod h1:qgCw4bBKZX8qMgGeEZzGFVT3notl42dBjNqO2jut0M0=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
Expand All @@ -54,6 +55,7 @@ golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
Expand Down
24 changes: 14 additions & 10 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ package main

import (
"context"
"io"
"log"
"os"
"time"

"github.com/inconshreveable/log15/v3"
"github.com/mattn/go-colorable"
"github.com/rs/zerolog"
"golang.org/x/term"

"github.com/kalbasit/ncps/cmd"
Expand All @@ -17,14 +18,7 @@ func main() {
}

func realMain() int {
logger := log15.New()
if term.IsTerminal(int(os.Stdout.Fd())) {
logger.SetHandler(log15.StreamHandler(colorable.NewColorableStdout(), log15.TerminalFormat()))
} else {
logger.SetHandler(log15.StreamHandler(os.Stdout, log15.JsonFormat()))
}

c := cmd.New(logger)
c := cmd.New(newLogger())

if err := c.Run(context.Background(), os.Args); err != nil {
log.Printf("error running the application: %s", err)
Expand All @@ -34,3 +28,13 @@ func realMain() int {

return 0
}

func newLogger() zerolog.Logger {
var output io.Writer = os.Stdout

if term.IsTerminal(int(os.Stdout.Fd())) {
output = zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.RFC3339}
}

return zerolog.New(output)
}
2 changes: 1 addition & 1 deletion nix/packages/ncps.nix
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@

subPackages = [ "." ];

vendorHash = "sha256-4X1wJ1v+GZchw4vzjd1U+llBXyYLMBHHWBccap5Mdn4=";
vendorHash = "sha256-RN64hl8Cy15gBpLXQX46VNhxbwf5PutFshcymEuudqA=";

doCheck = true;

Expand Down
Loading

0 comments on commit e628d2d

Please sign in to comment.