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
diff --git a/server/tm/git_tm/git_task_manager.go b/server/tm/git_tm/git_task_manager.go
index 02d5197..6a8735e 100644
--- a/server/tm/git_tm/git_task_manager.go
+++ b/server/tm/git_tm/git_task_manager.go
@@ -3,6 +3,7 @@
import (
"context"
"fmt"
+ "log/slog"
"os"
"path/filepath"
"sort"
@@ -20,14 +21,29 @@
git git.GitInterface
repoPath string
tasksDir string
+ logger *slog.Logger
}
// NewGitTaskManager creates a new GitTaskManager instance
-func NewGitTaskManager(git git.GitInterface, repoPath string) *GitTaskManager {
+func NewGitTaskManager(git git.GitInterface, repoPath string, logger *slog.Logger) *GitTaskManager {
return &GitTaskManager{
git: git,
repoPath: repoPath,
tasksDir: filepath.Join(repoPath, "tasks"),
+ logger: logger,
+ }
+}
+
+// NewGitTaskManagerWithLogger creates a new GitTaskManager instance with a custom logger
+func NewGitTaskManagerWithLogger(git git.GitInterface, repoPath string, logger *slog.Logger) *GitTaskManager {
+ if logger == nil {
+ logger = slog.Default()
+ }
+ return &GitTaskManager{
+ git: git,
+ repoPath: repoPath,
+ tasksDir: filepath.Join(repoPath, "tasks"),
+ logger: logger,
}
}
diff --git a/server/tm/git_tm/git_task_manager_test.go b/server/tm/git_tm/git_task_manager_test.go
index cd37838..f7da286 100644
--- a/server/tm/git_tm/git_task_manager_test.go
+++ b/server/tm/git_tm/git_task_manager_test.go
@@ -2,6 +2,7 @@
import (
"context"
+ "log/slog"
"os"
"path/filepath"
"testing"
@@ -41,7 +42,10 @@
err = gitImpl.SetUserConfig(ctx, userConfig)
require.NoError(t, err)
- gtm := NewGitTaskManager(gitImpl, repoPath)
+ // Create logger for testing
+ logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo}))
+
+ gtm := NewGitTaskManagerWithLogger(gitImpl, repoPath, logger)
return gtm, gitImpl
}
@@ -51,7 +55,11 @@
defer cleanup()
gitImpl := git.DefaultGit(tempDir)
- gtm := NewGitTaskManager(gitImpl, tempDir)
+
+ // Create logger for testing
+ logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo}))
+
+ gtm := NewGitTaskManagerWithLogger(gitImpl, tempDir, logger)
assert.NotNil(t, gtm)
assert.Equal(t, gitImpl, gtm.git)