fix: taking 100% CPU if the log file is not a regular file

This commit is contained in:
0xJacky 2024-01-26 18:49:56 +08:00
parent f20d97a9fd
commit d70e37c857
No known key found for this signature in database
GPG key ID: B6E4A6E4A561BAF0
4 changed files with 21 additions and 8 deletions

View file

@ -3,7 +3,6 @@ package nginx
import (
"encoding/json"
"github.com/0xJacky/Nginx-UI/api"
"github.com/0xJacky/Nginx-UI/internal/helper"
"github.com/0xJacky/Nginx-UI/internal/logger"
"github.com/0xJacky/Nginx-UI/internal/nginx"
"github.com/gin-gonic/gin"
@ -50,7 +49,7 @@ func GetNginxLogPage(c *gin.Context) {
return
}
f, err := os.Open(logPath)
logFileStat, err := os.Stat(logPath)
if err != nil {
c.JSON(http.StatusOK, nginxLogPageResp{})
@ -58,7 +57,13 @@ func GetNginxLogPage(c *gin.Context) {
return
}
logFileStat, err := os.Stat(logPath)
if !logFileStat.Mode().IsRegular() {
c.JSON(http.StatusOK, nginxLogPageResp{})
logger.Error("log file is not regular file:", logPath)
return
}
f, err := os.Open(logPath)
if err != nil {
c.JSON(http.StatusOK, nginxLogPageResp{})
@ -188,8 +193,16 @@ func tailNginxLog(ws *websocket.Conn, controlChan chan controlStruct, errChan ch
Whence: io.SeekEnd,
}
if !helper.FileExists(logPath) {
errChan <- errors.New("error log path not exists " + logPath)
stat, err := os.Stat(logPath)
if os.IsNotExist(err) {
errChan <- errors.New("[error] log path not exists " + logPath)
return
}
if !stat.Mode().IsRegular() {
errChan <- errors.New("[error] " + logPath + " is not a regular file. " +
"If you are using nginx-ui in docker container, please refer to " +
"https://nginxui.com/zh_CN/guide/config-nginx-log.html for more information.")
return
}

View file

@ -1 +1 @@
{"version":"2.0.0-beta.11","build_id":109,"total_build":313}
{"version":"2.0.0-beta.11","build_id":110,"total_build":314}

View file

@ -1 +1 @@
{"version":"2.0.0-beta.11","build_id":109,"total_build":313}
{"version":"2.0.0-beta.11","build_id":110,"total_build":314}

View file

@ -8,7 +8,7 @@ StartCmd = bash
NodeSecret = fdc7764f-92d2-454c-9640-6a09be121139
Demo = true
[nginx_log]
[nginx]
AccessLogPath = /var/log/nginx/access.local.log
ErrorLogPath = /var/log/nginx/error.local.log