ugit @main -
refs -
log -
-
https://git.jolheiser.com/ugit.git
The code powering this h*ckin' site
change charm log to slog
Signature
-----BEGIN SSH SIGNATURE-----
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgBTEvCQk6VqUAdN2RuH6bj1dNkY
oOpbPWj+jw4ua1B1cAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5
AAAAQEv8adAPmDASdcm+p2jG6PEvFMXg7ux7DVwCnpUxeFCwXYugXFGIhVaG0TqRcF+Q8t
XCRqGmtUdUrLqDFIdJcg8=
-----END SSH SIGNATURE-----
6 changed files, 31 additions(+), 22 deletions(-)
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
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)
}
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
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)
}
}
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{}
)
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 {