diff --git a/core/logger/logger.go b/core/logger/logger.go index 6e515dc..9229074 100644 --- a/core/logger/logger.go +++ b/core/logger/logger.go @@ -27,6 +27,7 @@ const ( LevelWarning LevelError LevelFatal + LevelServer ) // Level names and colors @@ -39,6 +40,7 @@ var levelProps = map[int]struct { LevelWarning: {"WARN", colorYellow}, LevelError: {" ERR", colorRed}, LevelFatal: {"FATL", colorPurple}, + LevelServer: {"SRVR", colorGreen}, } // Time format for log messages @@ -227,6 +229,11 @@ func (l *Logger) Fatal(format string, args ...any) { // No need for os.Exit here as it's handled in log() } +// Server logs a server message +func (l *Logger) Server(format string, args ...any) { + l.log(LevelServer, format, args...) +} + // Default global logger var defaultLogger = New(LevelInfo, true) @@ -255,6 +262,11 @@ func Fatal(format string, args ...any) { defaultLogger.Fatal(format, args...) } +// Server logs a server message to the default logger +func Server(format string, args ...any) { + defaultLogger.Server(format, args...) +} + // LogRaw logs a raw message to the default logger func LogRaw(format string, args ...any) { defaultLogger.LogRaw(format, args...) diff --git a/moonshark.go b/moonshark.go index 1e17c49..a88928d 100644 --- a/moonshark.go +++ b/moonshark.go @@ -47,9 +47,9 @@ func initRouters(routesDir, staticDir string, log *logger.Logger) (*routers.LuaR func main() { // Initialize logger - log := logger.New(logger.LevelInfo, true) + log := logger.New(logger.LevelDebug, true) - log.Info("Starting Moonshark server") + log.Server("Starting Moonshark server") // Load configuration from config.lua cfg, err := config.Load("config.lua") @@ -59,6 +59,19 @@ func main() { cfg = config.New() } + switch cfg.GetString("log_level", "info") { + case "debug": + log.SetLevel(logger.LevelDebug) + case "warn": + log.SetLevel(logger.LevelWarning) + case "error": + log.SetLevel(logger.LevelError) + case "fatal": + log.SetLevel(logger.LevelFatal) + default: + log.SetLevel(logger.LevelInfo) + } + // Get port from config or use default port := cfg.GetInt("port", 3117) @@ -70,32 +83,34 @@ func main() { log.Fatal("Router initialization failed: %v", err) } - // Set up file watchers for automatic reloading - luaWatcher, err := watchers.WatchLuaRouter(luaRouter, routesDir, log) - if err != nil { - log.Warning("Failed to watch routes directory: %v", err) - } else { - defer luaWatcher.Close() - log.Info("File watcher active for Lua routes") - } + if cfg.GetBool("watchers", false) { + // Set up file watchers for automatic reloading + luaWatcher, err := watchers.WatchLuaRouter(luaRouter, routesDir, log) + if err != nil { + log.Warning("Failed to watch routes directory: %v", err) + } else { + defer luaWatcher.Close() + log.Info("File watcher active for Lua routes") + } - staticWatcher, err := watchers.WatchStaticRouter(staticRouter, staticDir, log) - if err != nil { - log.Warning("Failed to watch static directory: %v", err) - } else { - defer staticWatcher.Close() - log.Info("File watcher active for static files") + staticWatcher, err := watchers.WatchStaticRouter(staticRouter, staticDir, log) + if err != nil { + log.Warning("Failed to watch static directory: %v", err) + } else { + defer staticWatcher.Close() + log.Info("File watcher active for static files") + } } // Get worker pool size from config or use default - workerPoolSize := cfg.GetInt("worker_pool_size", 4) + workerPoolSize := cfg.GetInt("pool_size", 4) // Initialize worker pool pool, err := workers.NewPool(workerPoolSize) if err != nil { log.Fatal("Failed to initialize worker pool: %v", err) } - log.Info("Worker pool initialized with %d workers", workerPoolSize) + log.Server("Worker pool initialized with %d workers", workerPoolSize) defer pool.Shutdown() // Create HTTP server @@ -114,11 +129,11 @@ func main() { } }() - log.Info("Server started on port %d", port) + log.Server("Server started on port %d", port) // Wait for interrupt signal <-stop - log.Info("Shutdown signal received") + log.Server("Shutdown signal received") // Gracefully shut down the server ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) @@ -128,5 +143,5 @@ func main() { log.Error("Server shutdown error: %v", err) } - log.Info("Server stopped") + log.Server("Server stopped") }