Update logging

Change-Id: I13279582aa717edad5d56323866b941db1919404
diff --git a/server/tm/git_tm/example.go b/server/tm/git_tm/example.go
index 39541fa..3c2816d 100644
--- a/server/tm/git_tm/example.go
+++ b/server/tm/git_tm/example.go
@@ -3,7 +3,8 @@
 import (
 	"context"
 	"fmt"
-	"log"
+	"log/slog"
+	"os"
 	"time"
 
 	"github.com/iomodo/staff/git"
@@ -12,11 +13,14 @@
 
 // Example demonstrates how to use the GitTaskManager
 func Example() {
+	// Create logger
+	logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo}))
+
 	// Initialize git interface
 	gitInterface := git.DefaultGit("./tasks-repo")
 
 	// Create task manager
-	taskManager := NewGitTaskManager(gitInterface, "./tasks-repo")
+	taskManager := NewGitTaskManagerWithLogger(gitInterface, "./tasks-repo", logger)
 
 	// Create a new task
 	ctx := context.Background()
@@ -32,46 +36,50 @@
 
 	task, err := taskManager.CreateTask(ctx, createReq)
 	if err != nil {
-		log.Fatalf("Failed to create task: %v", err)
+		logger.Error("Failed to create task", slog.String("error", err.Error()))
+		os.Exit(1)
 	}
 
-	fmt.Printf("Created task: %s\n", task.ID)
+	logger.Info("Created task", slog.String("id", task.ID))
 
 	// Get the task
 	retrievedTask, err := taskManager.GetTask(ctx, task.ID)
 	if err != nil {
-		log.Fatalf("Failed to get task: %v", err)
+		logger.Error("Failed to get task", slog.String("error", err.Error()))
+		os.Exit(1)
 	}
 
-	fmt.Printf("Retrieved task: %s - %s\n", retrievedTask.ID, retrievedTask.Title)
+	logger.Info("Retrieved task", slog.String("id", retrievedTask.ID), slog.String("title", retrievedTask.Title))
 
 	// Start the task
 	startedTask, err := taskManager.StartTask(ctx, task.ID)
 	if err != nil {
-		log.Fatalf("Failed to start task: %v", err)
+		logger.Error("Failed to start task", slog.String("error", err.Error()))
+		os.Exit(1)
 	}
 
-	fmt.Printf("Started task: %s (status: %s)\n", startedTask.ID, startedTask.Status)
+	logger.Info("Started task", slog.String("id", startedTask.ID), slog.String("status", string(startedTask.Status)))
 
 	// List all tasks
 	taskList, err := taskManager.ListTasks(ctx, nil, 0, 10)
 	if err != nil {
-		log.Fatalf("Failed to list tasks: %v", err)
+		logger.Error("Failed to list tasks", slog.String("error", err.Error()))
+		os.Exit(1)
 	}
 
-	fmt.Printf("Total tasks: %d\n", taskList.TotalCount)
+	logger.Info("Total tasks", slog.Int("count", taskList.TotalCount))
 	for _, t := range taskList.Tasks {
-		fmt.Printf("- %s: %s (%s)\n", t.ID, t.Title, t.Status)
+		logger.Info("Task", slog.String("id", t.ID), slog.String("title", t.Title), slog.String("status", string(t.Status)))
 	}
 
 	// Complete the task
 	completedTask, err := taskManager.CompleteTask(ctx, task.ID)
 	if err != nil {
-		log.Fatalf("Failed to complete task: %v", err)
+		logger.Error("Failed to complete task", slog.String("error", err.Error()))
+		os.Exit(1)
 	}
 
-	fmt.Printf("Completed task: %s (completed at: %s)\n",
-		completedTask.ID, completedTask.CompletedAt.Format(time.RFC3339))
+	logger.Info("Completed task", slog.String("id", completedTask.ID), slog.String("completed_at", completedTask.CompletedAt.Format(time.RFC3339)))
 }
 
 // ExampleTaskFile shows the format of a task file