Home

ugit @main - refs - log -
-
https://git.jolheiser.com/ugit.git
The code powering this h*ckin' site
tree log patch
change charm log to slog
Signature
-----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgBTEvCQk6VqUAdN2RuH6bj1dNkY oOpbPWj+jw4ua1B1cAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 AAAAQEv8adAPmDASdcm+p2jG6PEvFMXg7ux7DVwCnpUxeFCwXYugXFGIhVaG0TqRcF+Q8t XCRqGmtUdUrLqDFIdJcg8= -----END SSH SIGNATURE-----
jolheiser <git@jolheiser.com>
3 weeks ago
6 changed files, 31 additions(+), 22 deletions(-)
M cmd/ugitd/args.gocmd/ugitd/args.go
diff --git a/cmd/ugitd/args.go b/cmd/ugitd/args.go
index eda11a02b5210d1a38cf672ae870d40b5bd1f1e2..24109585663c4b7156f95becaddbb4609d543d39 100644
--- a/cmd/ugitd/args.go
+++ b/cmd/ugitd/args.go
@@ -3,9 +3,9 @@
 import (
 	"flag"
 	"fmt"
+	"log/slog"
 	"strings"
 
-	"github.com/charmbracelet/log"
 	"github.com/peterbourgon/ff/v3"
 	"github.com/peterbourgon/ff/v3/ffyaml"
 )
@@ -51,7 +51,7 @@ 	URL  string
 }
 
 type logArgs struct {
-	Level log.Level
+	Level slog.Level
 	JSON  bool
 }
 
@@ -78,14 +78,23 @@ 			Title:       "ugit",
 			Description: "Minimal git server",
 		},
 		Log: logArgs{
-			Level: log.InfoLevel,
+			Level: slog.LevelError,
 		},
 	}
 
 	fs.Func("log.level", "Logging level", func(s string) error {
-		lvl, err := log.ParseLevel(s)
-		if err != nil {
-			return err
+		var lvl slog.Level
+		switch strings.ToLower(s) {
+		case "debug":
+			lvl = slog.LevelDebug
+		case "info":
+			lvl = slog.LevelInfo
+		case "warn", "warning":
+			lvl = slog.LevelWarn
+		case "error":
+			lvl = slog.LevelError
+		default:
+			return fmt.Errorf("unknown log level %q: options are [debug, info, warn, error]", s)
 		}
 		c.Log.Level = lvl
 		return nil
M cmd/ugitd/main.gocmd/ugitd/main.go
diff --git a/cmd/ugitd/main.go b/cmd/ugitd/main.go
index 2219d4d77fd57a27705214fb2f5130277091bdc5..724a42bbc42624ca3b259a9c688db9b3e5a30371 100644
--- a/cmd/ugitd/main.go
+++ b/cmd/ugitd/main.go
@@ -4,6 +4,7 @@ import (
 	"errors"
 	"flag"
 	"fmt"
+	"log"
 	"log/slog"
 	"os"
 	"os/signal"
@@ -11,7 +12,6 @@ 	"path/filepath"
 	"strconv"
 	"strings"
 
-	"github.com/charmbracelet/log"
 	"github.com/go-chi/chi/v5/middleware"
 	"github.com/go-chi/httplog/v2"
 	"github.com/go-git/go-git/v5/plumbing/protocol/packp"
@@ -39,14 +39,14 @@ 	if err != nil {
 		panic(err)
 	}
 
-	log.SetLevel(args.Log.Level)
+	slog.SetLogLoggerLevel(args.Log.Level)
 	middleware.DefaultLogger = httplog.RequestLogger(httplog.NewLogger("ugit", httplog.Options{
 		JSON:     args.Log.JSON,
 		LogLevel: slog.Level(args.Log.Level),
-		Concise:  args.Log.Level != log.DebugLevel,
+		Concise:  args.Log.Level != slog.LevelDebug,
 	}))
 
-	if args.Log.Level == log.DebugLevel {
+	if args.Log.Level == slog.LevelDebug {
 		trace.SetTarget(trace.Packet)
 	} else {
 		middleware.DefaultLogger = http.NoopLogger
@@ -54,7 +54,8 @@ 		ssh.DefaultLogger = ssh.NoopLogger
 	}
 
 	if args.Log.JSON {
-		log.SetFormatter(log.JSONFormatter)
+		logger := slog.New(slog.NewJSONHandler(os.Stderr, nil))
+		slog.SetDefault(logger)
 	}
 
 	if err := requiredFS(args.RepoDir); err != nil {
@@ -74,7 +75,7 @@ 		if err != nil {
 			panic(err)
 		}
 		go func() {
-			log.Debugf("SSH listening on ssh://localhost:%d\n", sshSettings.Port)
+			log.Printf("SSH listening on ssh://localhost:%d\n", sshSettings.Port)
 			if err := sshSrv.ListenAndServe(); err != nil {
 				panic(err)
 			}
@@ -102,7 +103,7 @@ 	}
 	if args.HTTP.Enable {
 		httpSrv := http.New(httpSettings)
 		go func() {
-			log.Debugf("HTTP listening on http://localhost:%d\n", httpSettings.Port)
+			log.Printf("HTTP listening on http://localhost:%d\n", httpSettings.Port)
 			if err := httpSrv.ListenAndServe(); err != nil {
 				panic(err)
 			}
M go.modgo.mod
diff --git a/go.mod b/go.mod
index 63dd23ddd4e1da0dfbb15f888458f3d46182ae0b..f45ce70ff5c7efe470b6fded5ac5ef5a926033ec 100644
--- a/go.mod
+++ b/go.mod
@@ -6,7 +6,6 @@ toolchain go1.23.3
 
 require (
 	github.com/alecthomas/chroma/v2 v2.15.0
-	github.com/charmbracelet/log v0.4.0
 	github.com/charmbracelet/ssh v0.0.0-20241211182756-4fe22b0f1b7c
 	github.com/charmbracelet/wish v1.4.4
 	github.com/dustin/go-humanize v1.0.1
@@ -31,6 +30,7 @@ 	github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
 	github.com/charmbracelet/bubbletea v1.2.4 // indirect
 	github.com/charmbracelet/keygen v0.5.1 // indirect
 	github.com/charmbracelet/lipgloss v1.0.0 // indirect
+	github.com/charmbracelet/log v0.4.0 // indirect
 	github.com/charmbracelet/x/ansi v0.6.0 // indirect
 	github.com/charmbracelet/x/conpty v0.1.0 // indirect
 	github.com/charmbracelet/x/errors v0.0.0-20250107110353-48b574af22a5 // indirect
M internal/http/httperr/httperr.gointernal/http/httperr/httperr.go
diff --git a/internal/http/httperr/httperr.go b/internal/http/httperr/httperr.go
index de1dfa46db9d956bad4f2e4a29a9d5d397713431..4911305d7d852b8f36fbb544be481ce97b59beed 100644
--- a/internal/http/httperr/httperr.go
+++ b/internal/http/httperr/httperr.go
@@ -2,9 +2,8 @@ package httperr
 
 import (
 	"errors"
+	"log/slog"
 	"net/http"
-
-	"github.com/charmbracelet/log"
 )
 
 type httpError struct {
@@ -41,7 +40,7 @@ 			if errors.As(err, &httpErr) {
 				status = httpErr.status
 			}
 
-			log.Error(err)
+			slog.Error("httperr Handler error", "error", err)
 			http.Error(w, http.StatusText(status), status)
 		}
 	}
M internal/ssh/ssh.gointernal/ssh/ssh.go
diff --git a/internal/ssh/ssh.go b/internal/ssh/ssh.go
index 31c49eb29bb3d509f412a4542eedc8a0d2aefb00..a6dec7bb45c58d5296809093af2ade15913736d9 100644
--- a/internal/ssh/ssh.go
+++ b/internal/ssh/ssh.go
@@ -2,8 +2,8 @@ package ssh
 
 import (
 	"fmt"
+	"log"
 
-	"github.com/charmbracelet/log"
 	"github.com/charmbracelet/ssh"
 	"github.com/charmbracelet/wish"
 	"github.com/charmbracelet/wish/logging"
@@ -42,7 +42,7 @@ func (a hooks) Push(_ string, _ ssh.PublicKey)  {}
 func (a hooks) Fetch(_ string, _ ssh.PublicKey) {}
 
 var (
-	DefaultLogger logging.Logger = log.StandardLog()
+	DefaultLogger logging.Logger = log.Default()
 	NoopLogger    logging.Logger = noopLogger{}
 )
 
M internal/ssh/wish.gointernal/ssh/wish.go
diff --git a/internal/ssh/wish.go b/internal/ssh/wish.go
index 7f4ae5943ee758a2cbc0a63ec1fdc32bedd66cc5..bdf504b0e0a2f14a4d7105dd1e9353f57b8fe807 100644
--- a/internal/ssh/wish.go
+++ b/internal/ssh/wish.go
@@ -5,6 +5,7 @@ 	"context"
 	"errors"
 	"fmt"
 	"io/fs"
+	"log/slog"
 	"os"
 	"path/filepath"
 	"strings"
@@ -12,7 +13,6 @@ 	"text/tabwriter"
 
 	"go.jolheiser.com/ugit/internal/git"
 
-	"github.com/charmbracelet/log"
 	"github.com/charmbracelet/ssh"
 	"github.com/charmbracelet/wish"
 )
@@ -91,7 +91,7 @@ 					if err := gitPack(sess, gc, repoDir, repo); err != nil {
 						if errors.Is(err, ErrInvalidRepo) {
 							Fatal(s, ErrInvalidRepo)
 						}
-						log.Error("unknown git error", "error", err)
+						slog.Error("unknown git error", "error", err)
 						Fatal(s, ErrSystemMalfunction)
 					}
 					gh.Fetch(repo, pk)
@@ -103,7 +103,7 @@ 			// Repo list
 			if len(cmd) == 0 {
 				des, err := os.ReadDir(repoDir)
 				if err != nil && err != fs.ErrNotExist {
-					log.Error("invalid repository", "error", err)
+					slog.Error("invalid repository", "error", err)
 				}
 				tw := tabwriter.NewWriter(s, 0, 0, 1, ' ', 0)
 				for _, de := range des {