Browse Source

fix(logger): prevent nil-deref panic in migrate/setting CLI paths

The package-level logger is nil until InitLogger runs, which only happens in runWebServer. The migrate and setting subcommands log without initializing it; PR #5520 added a logger.Info on a success path in MigrationRestoreVisionFlow, so 'x-ui migrate' segfaults on installs with a VLESS inbound needing Vision-flow restoration.

Initialize logger to a usable default at package load so no code path can nil-deref it, and set up the dual backend in migrateDb so migration steps are logged like runWebServer.

Fixes #5581
MHSanaei 15 giờ trước cách đây
mục cha
commit
522b1b64b0
2 tập tin đã thay đổi với 4 bổ sung1 xóa
  1. 3 1
      internal/logger/logger.go
  2. 1 0
      main.go

+ 3 - 1
internal/logger/logger.go

@@ -29,7 +29,9 @@ const (
 )
 
 var (
-	logger     *logging.Logger
+	// Initialized to a usable default so logging never nil-derefs before InitLogger
+	// runs — the "migrate" and "setting" CLI subcommands log without calling it.
+	logger     = logging.MustGetLogger("x-ui")
 	fileRotate *lumberjack.Logger // nil when file backend disabled
 
 	// logBuffer maintains recent log entries in memory for web UI retrieval;

+ 1 - 0
main.go

@@ -484,6 +484,7 @@ func GetApiToken(getApiToken bool) {
 func migrateDb() {
 	inboundService := service.InboundService{}
 
+	logger.InitLogger(logging.INFO)
 	err := database.InitDB(config.GetDBPath())
 	if err != nil {
 		log.Fatal(err)