diff --git a/cmd/server_main.go b/cmd/server_main.go index 9eef17d97e..81e66080e2 100644 --- a/cmd/server_main.go +++ b/cmd/server_main.go @@ -2,6 +2,7 @@ package main import ( "context" + "flag" "fmt" "net/http" "os" @@ -27,7 +28,29 @@ import ( "ragflow/internal/tokenizer" ) +func printHelp() { + fmt.Fprintf(os.Stderr, "Usage: %s [OPTIONS]\n\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "RAGFlow Server - Open-source RAG engine based on deep document understanding\n\n") + fmt.Fprintf(os.Stderr, "Options:\n") + fmt.Fprintf(os.Stderr, " -p, --port int\tServer port (overrides config file)\n") + fmt.Fprintf(os.Stderr, " -h, --help \tShow this help message and exit\n") + fmt.Fprintf(os.Stderr, "\nExamples:\n") + fmt.Fprintf(os.Stderr, " %s # Start server with config file port\n", os.Args[0]) + fmt.Fprintf(os.Stderr, " %s -p 8080 # Start server on port 8080\n", os.Args[0]) + fmt.Fprintf(os.Stderr, " %s --port 8080 # Start server on port 8080\n", os.Args[0]) +} + func main() { + // Parse command line flags + var portFlag int + flag.IntVar(&portFlag, "port", 0, "Server port (overrides config file)") + flag.IntVar(&portFlag, "p", 0, "Server port (shorthand, overrides config file)") + + // Custom help message + flag.Usage = printHelp + + flag.Parse() + // Initialize logger with default level // logger.Init("info"); // set debug log level if err := logger.Init("info"); err != nil { @@ -39,6 +62,13 @@ func main() { logger.Fatal("Failed to initialize config", zap.Error(err)) } + // Override port with command line argument if provided + if portFlag > 0 { + config := server.GetConfig() + config.Server.Port = portFlag + logger.Info("Port overridden by command line argument", zap.Int("port", portFlag)) + } + // Load model providers configuration if err := server.LoadModelProviders(""); err != nil { logger.Fatal("Failed to load model providers", zap.Error(err)) @@ -46,6 +76,9 @@ func main() { logger.Info("Model providers loaded", zap.Int("count", len(server.GetModelProviders()))) config := server.GetConfig() + if config.Server.Port == 0 { + logger.Fatal("Server port is not configured. Please specify via --port flag or config file.") + } // Reinitialize logger with configured level if different if config.Log.Level != "" && config.Log.Level != "info" { diff --git a/internal/service/heartbeat_sender.go b/internal/service/heartbeat_sender.go index 8a80c47137..3d7539848b 100644 --- a/internal/service/heartbeat_sender.go +++ b/internal/service/heartbeat_sender.go @@ -119,10 +119,9 @@ func (h *HeartbeatSender) SendHeartbeat() error { defer resp.Body.Close() if resp.StatusCode != 200 { - h.logger.Error("Heartbeat request failed", - zap.Int("status_code", resp.StatusCode), - ) - return fmt.Errorf("heartbeat request failed with status code: %d", resp.StatusCode) + errMsg := fmt.Errorf("Heartbeat request failed with status code: %d", resp.StatusCode) + h.logger.Warn(errMsg.Error()) + return errMsg } h.logger.Debug("Heartbeat sent successfully",