mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-04-19 21:42:24 +00:00
fix crash report
Co-Authored-By: Alireza Ahmadi <alireza7@gmail.com>
This commit is contained in:
parent
4e0aca16c2
commit
4c4cc362b3
2 changed files with 19 additions and 6 deletions
|
@ -16,11 +16,24 @@ 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}) \[([^\]]+)\] (.+)$`)
|
crashRegex := regexp.MustCompile(`(?i)(panic|exception|stack trace|fatal error)`)
|
||||||
|
|
||||||
// Convert the data to a string
|
// Convert the data to a string
|
||||||
message := strings.TrimSpace(string(m))
|
message := strings.TrimSpace(string(m))
|
||||||
|
|
||||||
|
// Check if the message contains a crash
|
||||||
|
if crashRegex.MatchString(message) {
|
||||||
|
logger.Debug("Core crash detected:\n", message)
|
||||||
|
lw.lastLine = message
|
||||||
|
err1 := writeCrachReport(m)
|
||||||
|
if err1 != nil {
|
||||||
|
logger.Error("Unable to write crash report:", err1)
|
||||||
|
}
|
||||||
|
return len(m), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
regex := regexp.MustCompile(`^(\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[([^\]]+)\] (.+)$`)
|
||||||
messages := strings.Split(message, "\n")
|
messages := strings.Split(message, "\n")
|
||||||
lw.lastLine = messages[len(messages)-1]
|
|
||||||
|
|
||||||
for _, msg := range messages {
|
for _, msg := range messages {
|
||||||
matches := regex.FindStringSubmatch(msg)
|
matches := regex.FindStringSubmatch(msg)
|
||||||
|
@ -42,9 +55,10 @@ func (lw *LogWriter) Write(m []byte) (n int, err error) {
|
||||||
default:
|
default:
|
||||||
logger.Debug("XRAY: " + msg)
|
logger.Debug("XRAY: " + msg)
|
||||||
}
|
}
|
||||||
|
lw.lastLine = ""
|
||||||
} else if msg != "" {
|
} else if msg != "" {
|
||||||
logger.Debug("XRAY: " + msg)
|
logger.Debug("XRAY: " + msg)
|
||||||
return len(m), nil
|
lw.lastLine = msg
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -226,7 +226,6 @@ func (p *process) Start() (err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("Failure in running xray-core:", err)
|
logger.Error("Failure in running xray-core:", err)
|
||||||
p.exitErr = err
|
p.exitErr = err
|
||||||
p.witeCrachReport(err)
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -243,7 +242,7 @@ func (p *process) Stop() error {
|
||||||
return p.cmd.Process.Signal(syscall.SIGTERM)
|
return p.cmd.Process.Signal(syscall.SIGTERM)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *process) witeCrachReport(err error) error {
|
func writeCrachReport(m []byte) error {
|
||||||
crashReportPath := config.GetBinFolderPath() + "/core_crash_" + time.Now().Format("20060102_150405") + ".log"
|
crashReportPath := config.GetBinFolderPath() + "/core_crash_" + time.Now().Format("20060102_150405") + ".log"
|
||||||
return os.WriteFile(crashReportPath, []byte(err.Error()), os.ModePerm)
|
return os.WriteFile(crashReportPath, m, os.ModePerm)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue