[logs] new bug-free log_writer

Co-Authored-By: Alireza Ahmadi <alireza7@gmail.com>
This commit is contained in:
MHSanaei 2024-02-17 21:37:58 +03:30
parent d6e05d4a1a
commit 9f6957ef3f
2 changed files with 7 additions and 14 deletions

View file

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

View file

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