feat: add structured logging with log/slog and panic recovery
Replace log.Printf/Println with slog.Info/Error/Warn across the codebase. Initialize slog with JSON handler in main.go. Add panic recovery defer in SSH session handler. Add structured game event logging (room created, player joined, game started, game over, player inactive removed). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
10
main.go
10
main.go
@@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
"github.com/tolelom/catacombs/config"
|
||||
@@ -15,6 +16,11 @@ import (
|
||||
func main() {
|
||||
os.MkdirAll("data", 0755)
|
||||
|
||||
logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
|
||||
Level: slog.LevelInfo,
|
||||
}))
|
||||
slog.SetDefault(logger)
|
||||
|
||||
cfg, err := config.Load("config.yaml")
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
@@ -38,11 +44,11 @@ func main() {
|
||||
// Start web terminal server in background
|
||||
go func() {
|
||||
if err := web.Start(webAddr, cfg.Server.SSHPort); err != nil {
|
||||
log.Printf("Web server error: %v", err)
|
||||
slog.Error("web server error", "error", err)
|
||||
}
|
||||
}()
|
||||
|
||||
log.Printf("Catacombs server starting — SSH :%d, Web :%d", cfg.Server.SSHPort, cfg.Server.HTTPPort)
|
||||
slog.Info("server starting", "ssh_port", cfg.Server.SSHPort, "http_port", cfg.Server.HTTPPort)
|
||||
if err := server.Start(sshAddr, lobby, db); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user