xbase 2 săptămâni în urmă
părinte
comite
e1c5c694a9
2 a modificat fișierele cu 42 adăugiri și 3 ștergeri
  1. 15 2
      cli.go
  2. 27 1
      raft.go

+ 15 - 2
cli.go

@@ -110,8 +110,11 @@ func formatBytes(bytes int64) string {
 
 // Start starts the command line interface
 func (c *CLI) Start() {
-	fmt.Printf("Node %s%s%s CLI Started\n", ColorGreen, c.server.Raft.nodeID, ColorReset)
-	fmt.Println("Type 'help' for commands.")
+	// Boxed startup message
+	var sb strings.Builder
+	sb.WriteString(fmt.Sprintf("Node %s%s%s CLI Started\n", ColorGreen, c.server.Raft.nodeID, ColorReset))
+	sb.WriteString("Type 'help' for commands.")
+	printBoxed(sb.String())
 
 	// State Monitor Loop
 	go func() {
@@ -394,6 +397,16 @@ func (c *CLI) registerDefaultCommands() {
 		printBoxed(sb.String())
 	})
 
+	c.RegisterCommand("quit", "Gracefully shutdown the node", func(parts []string, server *KVServer) {
+		printBoxed("Shutting down node...")
+		if err := server.Stop(); err != nil {
+			printBoxed(fmt.Sprintf("%sError stopping server:%s %v", ColorRed, ColorReset, err))
+		} else {
+			printBoxed(fmt.Sprintf("%sNode stopped successfully.%s", ColorGreen, ColorReset))
+		}
+		os.Exit(0)
+	})
+
 	c.RegisterCommand("help", "Show commands", func(parts []string, server *KVServer) {
 		var sb strings.Builder
 		sb.WriteString(fmt.Sprintf("%sCommands:%s\n", ColorGreen, ColorReset))

+ 27 - 1
raft.go

@@ -160,8 +160,34 @@ func (l *ConsoleLogger) log(level int, levelStr, format string, args ...interfac
 	}
 	l.mu.Lock()
 	defer l.mu.Unlock()
+	var levelColor string
+	// Define colors locally to avoid dependency issues if cli.go is excluded
+	const (
+		colorReset  = "\033[0m"
+		colorDim    = "\033[90m"
+		colorRed    = "\033[31m"
+		colorGreen  = "\033[32m"
+		colorYellow = "\033[33m"
+		colorCyan   = "\033[36m"
+	)
+
+	switch level {
+	case 0: levelColor = colorDim
+	case 1: levelColor = colorGreen
+	case 2: levelColor = colorYellow
+	case 3: levelColor = colorRed
+	default: levelColor = colorReset
+	}
+
 	msg := fmt.Sprintf(format, args...)
-	fmt.Printf("[%s] %s [%s] %s\n", time.Now().Format("15:04:05.000"), l.Prefix, levelStr, msg)
+	
+	// Format: [Time] Node [LEVEL] Message
+	// Aligned for better readability
+	fmt.Printf("%s[%s]%s %s%-8s%s %s[%-5s]%s %s\n",
+		colorDim, time.Now().Format("15:04:05.000"), colorReset,
+		colorCyan, l.Prefix, colorReset,
+		levelColor, levelStr, colorReset,
+		msg)
 }
 
 func (l *ConsoleLogger) Debug(format string, args ...interface{}) {