Bladeren bron

feat(logging): add debug logging for process checks in nginx

0xJacky 1 week geleden
bovenliggende
commit
fb1d82f29d
3 gewijzigde bestanden met toevoegingen van 23 en 4 verwijderingen
  1. 9 2
      api/cluster/websocket.go
  2. 8 0
      internal/nginx/nginx.go
  3. 6 2
      internal/nginx/resolve_path.go

+ 9 - 2
api/cluster/websocket.go

@@ -10,6 +10,7 @@ import (
 	"time"
 
 	"github.com/0xJacky/Nginx-UI/internal/analytic"
+	"github.com/0xJacky/Nginx-UI/internal/kernel"
 	"github.com/0xJacky/Nginx-UI/model"
 	"github.com/gin-gonic/gin"
 	"github.com/gorilla/websocket"
@@ -258,7 +259,8 @@ func (c *Client) writePump() {
 			if err := c.conn.WriteMessage(websocket.PingMessage, nil); err != nil {
 				return
 			}
-
+		case <-kernel.Context.Done():
+			return
 		case <-c.ctx.Done():
 			return
 		}
@@ -292,5 +294,10 @@ func (c *Client) readPump() {
 		}
 	}()
 
-	<-c.ctx.Done()
+	select {
+	case <-kernel.Context.Done():
+		return
+	case <-c.ctx.Done():
+		return
+	}
 }

+ 8 - 0
internal/nginx/nginx.go

@@ -10,6 +10,7 @@ import (
 
 	"github.com/0xJacky/Nginx-UI/internal/docker"
 	"github.com/0xJacky/Nginx-UI/settings"
+	"github.com/uozi-tech/cosy/logger"
 )
 
 var (
@@ -119,26 +120,31 @@ func IsRunning() bool {
 
 // isProcessRunning checks if the process with the PID from pidPath is actually running
 func isProcessRunning(pidPath string) bool {
+	logger.Debugf("isProcessRunning pidPath: %s", pidPath)
 	// Check if PID file exists
 	if fileInfo, err := os.Stat(pidPath); err != nil || fileInfo.Size() == 0 {
+		logger.Debugf("isProcessRunning pidPath: %s, err: %v", pidPath, err)
 		return false
 	}
 
 	// Read PID from file
 	pidBytes, err := os.ReadFile(pidPath)
 	if err != nil {
+		logger.Debugf("isProcessRunning pidPath: %s, err: %v", pidPath, err)
 		return false
 	}
 
 	pidStr := strings.TrimSpace(string(pidBytes))
 	pid, err := strconv.Atoi(pidStr)
 	if err != nil {
+		logger.Debugf("isProcessRunning pidPath: %s, err: %v", pidPath, err)
 		return false
 	}
 
 	// Cross-platform process existence check
 	process, err := os.FindProcess(pid)
 	if err != nil {
+		logger.Debugf("isProcessRunning pidPath: %s, err: %v", pidPath, err)
 		return false
 	}
 
@@ -148,7 +154,9 @@ func isProcessRunning(pidPath string) bool {
 	err = process.Signal(syscall.Signal(0))
 	if err == nil {
 		// Process exists and we can signal it
+		logger.Debugf("isProcessRunning pidPath: %s, process exists", pidPath)
 		return true
 	}
+	logger.Debugf("isProcessRunning pidPath: %s, process does not exist", pidPath)
 	return false
 }

+ 6 - 2
internal/nginx/resolve_path.go

@@ -44,8 +44,12 @@ func GetPrefix() string {
 	r, _ := regexp.Compile(`--prefix=(\S+)`)
 	match := r.FindStringSubmatch(out)
 	if len(match) < 1 {
-		logger.Error("nginx.GetPrefix len(match) < 1")
-		nginxPrefix = "/usr/local/nginx"
+		logger.Debug("nginx.GetPrefix len(match) < 1")
+		if runtime.GOOS == "windows" {
+			nginxPrefix = GetNginxExeDir()
+		} else {
+			nginxPrefix = "/usr/local/nginx"
+		}
 		return nginxPrefix
 	}