From 9f6957ef3f5625db00d5dc22efd99bc8af06cba2 Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Sat, 17 Feb 2024 21:37:58 +0330 Subject: [PATCH] [logs] new bug-free log_writer Co-Authored-By: Alireza Ahmadi --- web/assets/js/model/xray.js | 2 +- xray/log_writer.go | 19 ++++++------------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js index e9676252bb..7018fb75e2 100644 --- a/web/assets/js/model/xray.js +++ b/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)){ diff --git a/xray/log_writer.go b/xray/log_writer.go index 53358ca250..2d208326a4 100644 --- a/xray/log_writer.go +++ b/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 {