Browse Source

[logs] new bug-free log_writer

Co-Authored-By: Alireza Ahmadi <[email protected]>
MHSanaei 1 year ago
parent
commit
9f6957ef3f
2 changed files with 7 additions and 14 deletions
  1. 1 1
      web/assets/js/model/xray.js
  2. 6 13
      xray/log_writer.go

+ 1 - 1
web/assets/js/model/xray.js

@@ -1557,7 +1557,7 @@ class Inbound extends XrayCommonClass {
         const orderChars = remarkModel.slice(1);
         let orders = {
             'i': remark,
-            'e': client ? client.email : '',
+            'e': email,
             'o': '',
           };
         if(ObjectUtil.isArrEmpty(this.stream.externalProxy)){

+ 6 - 13
xray/log_writer.go

@@ -1,6 +1,7 @@
 package xray
 
 import (
+	"regexp"
 	"strings"
 	"x-ui/logger"
 )
@@ -14,26 +15,18 @@ type LogWriter struct {
 }
 
 func (lw *LogWriter) Write(m []byte) (n int, err error) {
+	regex := regexp.MustCompile(`^(\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[([^\]]+)\] (.+)$`)
 	// Convert the data to a string
 	message := strings.TrimSpace(string(m))
 	messages := strings.Split(message, "\n")
 	lw.lastLine = messages[len(messages)-1]
 
 	for _, msg := range messages {
-		messageBody := msg
+		matches := regex.FindStringSubmatch(msg)
 
-		// Remove timestamp
-		splittedMsg := strings.SplitN(msg, " ", 3)
-		if len(splittedMsg) > 2 {
-			messageBody = strings.TrimSpace(strings.SplitN(msg, " ", 3)[2])
-		}
-
-		// Find level in []
-		startIndex := strings.Index(messageBody, "[")
-		endIndex := strings.Index(messageBody, "]")
-		if startIndex != -1 && endIndex != -1 && startIndex < endIndex {
-			level := strings.TrimSpace(messageBody[startIndex+1 : endIndex])
-			msgBody := "XRAY: " + strings.TrimSpace(messageBody[endIndex+1:])
+		if len(matches) > 3 {
+			level := matches[2]
+			msgBody := matches[3]
 
 			// Map the level to the appropriate logger function
 			switch level {